我有一个Mongo集合的项目(项目)。我有另一个与项目相关的权限集合(item_ownership),其中一个权限存储拥有项目的用户的标识(owner_id)。我想获取用户拥有的所有项目并发布它们。 因此,理论上,我想先从'item_ownership'集合中选择item_id,然后将其插入'items'集合的查询中以对其进行过滤。这个过滤结果集将发布到浏览器:减少流星发送给浏览器的Mongo记录数量?
Items = new Mongo.Collection("items");
ItemOwnership = new Mongo.Collection("item_ownership");
Meteor.publish('items_pub', function() {
var itemOwnershipColl = ItemOwnership.find(
{
owner_id: Meteor.userId()
},
{
fields: { item_id: 1 }
}
);
// Compile list of items to return.
var item_id_array = [];
itemOwnershipColl.forEach(function (record) {
item_id_array[item_id_array.length] = record.item_id;
});
return Items.find(
{
item_id: { $in: item_id_array }
},
{
sort: {
item_order: 1
}
}
);
});
这是最好的方式去做这件事吗?
使用此方法(以及问题的原始方法)将导致非反应性连接。我通过使用Michael Floyd建议的软件包解决了我的问题。 – JoeTidee