1

我有代码

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


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

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

4

1 回答 1

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都会被调用。

于 2012-08-16T14:12:13.597 回答