流星集合查询'undefined'

Aks*_*hat 1 meteor

我有代码

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


if (Meteor.is_client) {
    Meteor.startup(function () {
        console.log(data.name)
    });
}
Run Code Online (Sandbox Code Playgroud)

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

jif*_*yin 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 )}
  });
}
Run Code Online (Sandbox Code Playgroud)

任何时候datas集合都有变化(?),Meteor.autosubscribe将调用函数.