Meteor不发布正确的用户

时间:2016-07-31 12:08:28

标签: meteor

我试图发布用户列表。我正在检查accoutActive: true的集合,然后获取studentUserId。我以为我可以用它来找到meteor.user,但它什么都不返回。有人可以告诉我我错过了什么。

Meteor.publish('list', function() {
  var activeStudent = StudentAccountStatus.find(
                          {"accountActive": true},
                          {fields:
                            {"studentUserId": 1}
                          }
                        ).fetch();

  return Meteor.users.find(
                    {_id: activeStudent}
                  );
});

1 个答案:

答案 0 :(得分:1)

目前,您的activeStudent变量包含一个对象数组,如下所示:

[ { _id: 'a104259adsjf' },
  { _id: 'eawor7u98faj' },
... ]

而对于你的mongo查询,你只需要一个字符串数组,即['a104259adsjf', 'eawor7u98faj', ...]

所以,你需要迭代你的对象数组来构造字符串数组,就像使用lodash _.map函数一样:

var activeStudentIds = _.map(activeStudent, function(obj) {
    return obj._id;
});

然后,使用mongo $ in选择器,您可以将查询重新表示为:

return Meteor.users.find(
    {_id: { $in: activeStudentIds } }
);