流星集合查询'undefined'

时间:2012-08-15 23:21:52

标签: meteor

我有代码

datas = new Meteor.Collection("datas")
var data = datas.findOne('101abcde1f2345ac00000001')


if (Meteor.is_client) {
    Meteor.startup(function () {
        console.log(data.name)
    });
}

但我在控制台中得到的是undefined错误。但是,如果我在Web检查器的javascript控制台中键入console.log(data.name)(大概是在某种等待之后它可以工作。我已经将代码放在Meteor.startup中以确保DOM准备就绪。我可能做错了什么?

1 个答案:

答案 0 :(得分:6)

您似乎正在使用autopublish包。并且(当然),Meteor.startup不等待订阅完成。

通常,我们使用反应性上下文&数据在Meteor中执行此操作 -

datas = new Meteor.Collection("datas")

if (Meteor.is_client){
  Meteor.autosubscribe(function(){
    var data = datas.findOne('101abcde1f2345ac00000001');
    if (data){ console.log( data.name )}
  });
}

任何时候datas集合都有变化(?),Meteor.autosubscribe中的函数都会被调用。