只是学习Meteor并同时围绕javascript包裹我的脑袋。
我定义了一个集合,并且能够使用.findOne()通过console命令成功检索文档:
myCollection.findOne({elementID: "avatar"});
然而,当我找到并同时将它分配给变量时,它返回undefined:
var elementObject = myCollection.findOne({elementID: "avatar"});
修改:var elementObject = myCollection.findOne({elementID: "avatar"});
返回undefined
后,我在控制台中再次运行elementObject
并返回正确的值。所以最终它可以工作但不会在第一次尝试时显示它。理解为什么会很好。
答案 0 :(得分:0)
当您在控制台中运行第二段代码时,您只是看到未定义的单词,并且您认为它返回未定义。但实际情况并非如此。如果第一个语句有效,第二个语句也可以。
因此,在运行第二行后,只需键入elementObject
并在控制台中按Enter键。现在,您将能够看到分配给变量的实际值。
答案 1 :(得分:0)
您的订阅尚未准备就绪。您的变量不会等到它从您的查询中获得结果。你必须做类似
的事情{{#if YOURHELPER}} template code {{/if}}
或使用带有waitOn的Iron-Router。因此,当所有内容都存在时,您的模板会被渲染。
https://github.com/iron-meteor/iron-router/blob/devel/Guide.md#the-waiton-option