我正在尝试读取MongoDB数据库中的文件。在控制台中,响应是正确的,而在我的应用程序中,我收到以下错误:
未捕获的TypeError:无法读取未定义的属性'iati'
我定义了一个模板助手,它应该返回MongoDB集合中的某个子字段。但是以下似乎不起作用(我得到了前面提到的错误)。
Template.hello.helpers({
test: function() {
return Test.findOne().iati;
}
});
似乎工作的是返回整个对象:
Template.hello.helpers({
test: function() {
return Test.findOne();
}
});
然后调用模板中的特定字段:
{{test.iati}}
但是,我想使用JavaScript脚本中的数据。我究竟做错了什么?
答案 0 :(得分:0)
像Tests.findOne()
这样的集合方法会将已经提取的文档返回给客户端的Minimongo副本。在提取文档之前,findOne()
将返回null。
为了防范这种情况,只需在继续计算之前检查帮助中的结果:
Template.hello.helpers({
test: function() {
if(! Test.findOne()) return;
return Test.findOne().iati;
},
});
您还可以在Iron Router中等待订阅,以确保加载正确的文档:
this.route('routeName', {
...
onBeforeAction: function() {
this.subscribe('subscriptionName').wait();
...
},
...
});