【问题标题】:Meteor - find return undefined流星 - 找到返回未定义
【发布时间】:2017-04-20 10:13:57
【问题描述】:

我使用 mongodb 处理流星。我正在尝试从数据库中获取集合。我可以从流星的这个集合中毫无问题地插入数据,但是当我尝试查找时,它不起作用。 我的收藏是“第一”。

服务器端:

Meteor.publish('first', function(){
  return first.find();
});

客户端:

var datacollab = first.find({"Mois":"Mars"});
console.log("collab: " + datacollab);

当我在 mongo shell 中创建这个命令行时,它工作正常。 我已经尝试使用 findOne 更改我的请求,或者将 .fetch 放在最后。

【问题讨论】:

  • 您没有指定是否订阅?
  • 是的,我在客户端做到了:Meteor.subscribe('first');
  • 您是否在等待订阅准备好/等待数据到达?
  • 我猜不是,因为我在 Template.mytemplate.rendered 中进行 first.find。但如果我在 .event 中这样做,它会起作用。如何在 .rendered 中等待订阅准备好?我需要将我的数据加载到 .rendered...

标签: mongodb meteor find


【解决方案1】:

如果您需要将代码放在 Template.myTemplate.onRendered 挂钩中,那么您有多种选择:

  • 使用Tracker.autorun,当您的数据库查询/游标返回新数据时,该Tracker.autorun 将自动重新执行。
  • 使用订阅的onReady 回调(假设您在创建或呈现模板时订阅)。当客户端收到服务器发布的第一个完整快照时,您的回调将被执行。

【讨论】:

  • 我尝试使用 Tracker.autorun。我写道:var handle = Meteor.subscribe('first'); Tracker.autorun(function() { if (handle.ready()){ console.log('ready'); var datacollab = first.find().fetch(); console.log( "data = " + datacollab); }else{ console.log('not ready'); } }); 和网络控制台显示我无法使用我的数据,但如果我再等一会儿,没关系:link
  • 我想这是另一个问题,您的回答对我最初的问题是正确的。谢谢
猜你喜欢
  • 1970-01-01
  • 2015-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多