我试图发布用户列表。我正在检查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}
);
});
答案 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 } }
);