使用Iron Router中的Meteor中的返回值进行查询

时间:2014-05-02 01:54:19

标签: meteor iron-router

在我的Meteor应用程序中,我有列表,其项目可以属于多个列表,因此列表包含一个包含 ID数组的字段。当我转到单个列表视图时,我想要一个从这个ID数组中查询 Items 的数据对象。我认为查询看起来像这样:

Items.find({ _id: { $in:  theArrayOfIds } });

但是,当我加载单个列表视图时,如何/在何处进行此查询?目前这是我的路线声明:

this.route('list', {
  path: '/list/:_id',
  data: function() {
    return {
        list: Lists.findOne(this.params._id)
     }
  }
});

我能以某种方式指向列表对象的未来结果吗?或者我在其他地方进行此查询?

1 个答案:

答案 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}});
    }
});