除模板外,Meteor集合不返回任何结果

时间:2014-09-20 23:00:28

标签: meteor

我是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似乎是正确的。

关于我在这里做错了什么的线索?

1 个答案:

答案 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机制。