为什么可以't我将检索到的文档分配给控制台中的变量

Why can't I assign a retrieved document to variable in console

本文关键字:文档 分配 变量 控制台 检索 为什么      更新时间:2023-09-26

只需学习Meteor,同时思考javascript。

我已经定义了一个集合,并且能够使用.findOne():通过控制台命令成功检索文档

myCollection.findOne({elementID: "avatar"});

然而,当我找到它并将其分配给一个变量时,它会返回未定义的:

var elementObject = myCollection.findOne({elementID: "avatar"});

编辑:var elementObject = myCollection.findOne({elementID: "avatar"});返回undefined后,我在控制台中再次运行elementObject,它返回正确的值。所以最终它是有效的,但在第一次尝试时没有显示出来。了解原因会很好。

当您在控制台中运行第二段代码时,您只看到单词undefined,并认为它返回了undefined。但事实并非如此。如果第一个语句有效,那么第二个语句也将有效。因此,在运行第二行之后,只需键入elementObject并在控制台中按enter键。现在,您将能够看到分配给变量的实际值。

您的订阅尚未准备好。您的变量不会等到它从查询中得到结果。你必须做一些类似的事情

{{#if YOURHELPER}} template code {{/if}}

或者使用waitOn的Iron路由器。以便在所有内容都存在时渲染模板。

https://github.com/iron-meteor/iron-router/blob/devel/Guide.md#the-等待选项