我有以下收藏:
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
});

10-07 14:35