我是Meteor框架的新手,在模板之外访问我的收藏集中的数据时遇到问题 我有一个小的mongo集合,可以通过使用模板检索和显示其数据没有问题。但是,当我尝试让光标或数组直接使用时,我没有得到任何结果。
在我的脚本中,使用find
var dataFind = Fakedata.find();
console.log(dataFind);
console.log(dataFind.count());
给出一个游标对象,但计数为零。
var dataFetch = Fakedata.find().fetch();
console.log(dataFetch);
console.log(dataFetch.length);
给出一个空数组,长度为零。
使用JS控制台中的相同find()
或fetch()
给出填充的对象,就像我希望上面的代码一样。在流星模板中,一切似乎都运行良好,所以pub / sub似乎是正确的。
关于我在这里做错了什么的线索?
答案 0 :(得分:0)
在您尝试访问收藏数据时,您的订阅似乎不是ready
,这是常见问题。
当您通过模板访问收集数据时,很可能是通过使用模板助手,这些助手恰好是被动的,因此当您的收藏集ready
时它们将重新运行,从而显示正确的数据。
虽然在非反应式脚本中访问您的馆藏时,如果订阅尚未ready
,它们将显示为空。
您可以尝试在脚本中使用此模式,仅在订阅准备就绪时执行代码:
Meteor.subscribe("mySubscription",function(){
// we are inside the ready callback here so collection date is available
console.log(Fakedata.find().fetch());
});
如果您正在寻找更强大的方法,请尝试查看iron:router
waitOn
机制。