我正在尝试使用mongodb查找项目并存储在ReactiveDict中,但我只是收到错误:
{{#each}} currently only accepts arrays, cursors or falsey...
我在这里做错了什么?
Template.body.onCreated(function(){
Meteor.subscribe('itemFind');
this.global = new ReactiveDict();
this.global.set('items',Items.find());
});
Template.body.helpers({
items(){
console.log(Template.instance().global.get('items'));
return Template.instance().global.get('items');
}
});
此外,我想如果我在原始查找语句中添加.fetch(),这将被修复,但显然不是。
我是Meteor的新手,所以我在这里做错了什么?
答案 0 :(得分:0)
在onCreated
上订阅尚未准备好。一个好的做法是在onCreated
上定义您的Reactive vars并在onRendered
上分配它们。
在任何情况下,您都需要等待订阅准备就绪。为此,您可以使用autorun()
。每次更新依赖关系时,autorun()
都会重新运行。
Template.body.onCreated(function() {
this.global = new ReactiveDict({});
});
Template.body.onRendered(function()
this.autorun(() => {
const subs = Meteor.subscribe('itemFind');
if(subs.ready()) {
this.global.set('items', Items.find({}));
}
});
});