Collection.findOne()不会在Template.created中返回任何结果

时间:2013-06-28 10:59:05

标签: meteor meteorite

我有一个简单的编辑表单模板。要编辑的文档的_id来自会话变量(由mini-pages从URL设置:http://example.com/items/4zt4z3t3t)。在Template.editForm.created函数中,我尝试使用ItemCollection.findOne({_id:_id})从集合中获取相应的文档。在所有情况下都正确设置了_id

当我导航到http://example.com/4zt4z3t3t并调试created函数时,ItemCollection.findOne()返回undefined,尽管集合中有项目。因此我永远无法通过_id找到我的项目。此外,当我将项目查找过程移动到路由阶段时,也没有查找结果。后来,集体按预期工作。

任何指针?

1 个答案:

答案 0 :(得分:0)

Meteor使用Data on the wire原则。这意味着当您的HTML加载时,您的数据不会随之发送,至少最初是这样。

因此,您无法访问.created函数中的数据,除非您希望在下载数据后加载该模板。这就是它最初返回undefined的原因,但是如果你稍后再检查它。

您可以在数据完成时等待订阅回调,然后加载模板。

OR

在模板中使用反应性并将其加载为空,并在数据进入时自动填充数据(实际上最简单)。访问模板中的数据并使用把手帮助程序填写数据并使用.rendered回调来进行任何更改。