在我的Meteor应用程序中,我有列表,其项目。 项可以属于多个列表,因此列表包含一个包含项 ID数组的字段。当我转到单个列表视图时,我想要一个从这个ID数组中查询 Items 的数据对象。我认为查询看起来像这样:
Items.find({ _id: { $in: theArrayOfIds } });
但是,当我加载单个列表视图时,如何/在何处进行此查询?目前这是我的路线声明:
this.route('list', {
path: '/list/:_id',
data: function() {
return {
list: Lists.findOne(this.params._id)
}
}
});
我能以某种方式指向列表对象的未来结果吗?或者我在其他地方进行此查询?
答案 0 :(得分:0)
在Iron Router中,路由的数据值既可以是对象,也可以是函数。见here in the documentation。因此,您可以按如下方式返回数据调用中的项目和列表:
this.route('list', {
path: '/list/:_id',
data: {
list: function(){
var id = Router._currentController.params._id;
return Lists.findOne(id);
},
items: function(){
var id = Router._currentController.params._id;
var list = Lists.findOne(id);
if (!!list){
/* assuming your array of item ids is a field on list named items */
var theArrayOfIds = list.items;
}
return !!list && Items.find({ _id: {$in: theArrayOfIds}});
}
});