客户端上的Meteor.js集合为空
Meteor.js Collection empty on Client
为什么myCollection.find().fetch()
返回空数组[]
,即使调用是在if(data){...}
内进行的?if
语句是否确保在执行console.log()
之前已检索到集合?
Template.chart.rendered = function() {
var data = myCollection.find().fetch();
if(data) {
console.log(data);
}
$('#chart').render();
}
这将在浏览器Javascript控制台中返回[]
。
您可以使用count()
来返回结果数。data
本身将是一个空数组,[]
不是伪数组([] == true
)。
另外,不要使用fetch()
,除非你要使用它的原始数据,因为它很费力。如果需要,您可以使用.forEach
进行循环。
var data = myCollection.find();
if(data.count())
console.log(data);
//If you need it for something/Not sure if this is right but just an example
$('#chart').render(data.fetch())
问题是您必须等待来自服务器的数据。当您只使用Template.name.rendered
函数时,它会立即被调用。您必须使用Template.name.helpers
函数来等待来自服务器的数据。文档中描述了所有内容。
当您"删除自动发布"时,似乎还必须在客户端上订阅。
if(Meteor.isClient) {
Meteor.startup(function() {
Myvars = new Mongo.Collection("myvars");
Meteor.subscribe('myvars')
});
}
并在服务器上启用允许和发布
if(Meteor.isServer) {
Meteor.startup(function () {
Myvars = new Mongo.Collection("myvars");
Myvars.allow({
insert: function () {
return true;
},
update: function () {
return true;
},
remove: function () {
return true;
}
});
if (Myvars.find().count() == 0) {
Myvars.insert({myvalue:'annoyed'});
}
Meteor.publish("myvars", function() {
return Myvars.find();
});
});
}
我也是新手。我只是想拥有所有客户都能分享的全球价值。从初学者的角度来看,这似乎是一个有用的想法,也是对流星团队的完全监督,但没有以这种方式明确记录。我仍然不知道什么是允许获取,这在官方文件中也完全不清楚。
确实如此,但在javascript中,您有以下奇怪的行为
if ([]){
console.log('Oops it goes inside the if')
} // and it will output this, nontheless it is counter-intuitive
这是因为JS引擎将Boolean([])
强制转换为true
。您可以在此处将不同类型强制转换为布尔类型。
检查数组一开始是否为空。
a = [];
if (a.length){
//do your thing
}
相关文章:
- 如何使用backbone.js从集合中获取模型名称
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- Meteor:插入集合后如何执行JS
- fabric js多边形集合坐标
- Backbone.js批量更新集合
- 根据屏幕大小显示主干.js集合的子集
- Meteor.js只更新一个参数,而不是整个集合
- 主干.js集合不迭代
- backbone.js可以't传递集合中的模型项's查看项目's视图
- 如何将会话数据从集合传递到视图?(Backbone JS/Coffeescapept)
- 将多级 mongodb 文档转换为 Backbone.js 模型/集合
- 转到其他 URL 后,如何保持排序的骨干.js集合
- 主干.js将 url 参数传递给集合
- 流星.js按字段中的值筛选集合
- 骨干.js集合筛选前 10 个模型
- 骨干.js具有多种排序的集合
- 主干.js绑定到集合“添加”呈现视图两次
- 使用主干获取集合.js但未设置每个模型的 id
- 在节点中使用计数器集合.js递增 ID 字段
- 如何在主干中转换具有子集合的集合.js