我有以下收藏:RideOffers
:一组用户在网站上发布的骑乘优惠,以及BidsOnOffers
:以上车次报价的集合。每个出价都与一个搭车优惠有关
我想向用户发送一份她发布的骑乘报价列表,但不是所有骑乘报价的所有报价:用户应该只能看到她的骑乘报价,而不是其他人的骑乘报价的任何报价。我能怎么做吗?以下是我迄今为止的研究成果:
Meteor.publish('RideOffers', function() {
return RideOffers.find();
});
Meteor.publish('BidsOnMyOffers', function() {
var MyRideOffers = RideOffers.find({userId: this.userId, active: true});
return BidsOnOffers.find({ offerId: {$in : [MyRideOffers._id]}, active: true});
});
这显然不起作用,有问题的部分是
{$in : [MyRideOffers._id]}
,我想。我是否尝试从MyRideOffers
获取一个id值数组?还是我的方法完全错误? 最佳答案
你的方法是正确的,但你的语法是错误的。
要从rideoffers集合构建id数组,请使用fetch(from meteor cursors)获取文档数组,使用“fields”选项仅从这些文档中选择id属性:
var myRideOffersIds=RideOffers.find({
userId:this.userId,
active:true
},{
fields:{
_id:1
}
}).fetch();
然后可以将此变量与$in一起使用:
return BidsOnOffers.find({
offerId:{
$in:myRideOffersIds
},
active:true
});