Meteor:具有嵌套mongo查询的出版物中的反应性

时间:2016-07-13 20:45:17

标签: meteor collections publish subscribe

我有一个像这样的集合:

//Groups Collection
{
  _id:1,
  members: [
    {
      memberId: 'A1B2',
      content: [1,2,3]
    },
    {
      memberId: 'C10B',
      content: [4,5,6]
    }
  ]
},
{
  _id:2,
  members: [
    {
      memberId: 'A1B2',
      content: [7,8,9]
    },
    {
      memberId: 'F804',
      content: [10,11,12]
    }
  ]
}

和另一个像这样的集合:

//Users Collection
{
    _id: 'A1B2',
    name: 'Newton'
},
{
    _id: 'C10B',
    name: 'Gauss'
},
{
    _id: 'F804',
    name: 'Leibniz'
}

我需要一个包含_Id = 1的Groups数组中所有用户ID的出版物。我试过:

Meteor.publish('themembers',idGroup,function() {
    return Users.find({_id:{$in:Groups.findOne(idGroup).members.map(function(e) {return e.memberId})}});
});

然后我订阅了:

Template.problem.onCreated(function() {
    Meteor.subscribe('themembers',1);
});

现在我可以访问帮助程序中的成员了:

Template.problem.helpers({
    members: function() {
        return Users.find();
    }
});

并且助手也正常工作。

但是现在,如果我向该组添加一个新成员,它不会出现在列表中,...我的订阅似乎没有被动反应。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

Meteor的典型问题:

您应该查看peerlibrary:reactive-publish

https://github.com/peerlibrary/meteor-reactive-publish