使用mongoose

时间:2016-03-04 17:15:21

标签: node.js mongodb mongoose-populate

我有以下 mongodb / mongoose 数据模型::

var UserSchema = new Schema({
     name: String
   , roles: [] // admin or client
   /* others object */
});

mongoose.model('User', UserSchema);

var ReviewSchema = new Schema({
    title: String
    , user: {
         type: Schema.ObjectId,
         ref: 'User'
    }
});

mongoose.model('Review', ReviewSchema);

现在,我希望获得所有审核,其中用户的角色为 admin 。我尝试了以下方式:

Review
  .find( { 'user.roles': 'admin' } )
  .populate('user')
  .exec(function(err, review) {
     console.log("review : ", review); // null
  });

NB: "mongoose": "^4.2.9",

我该如何解决这个问题?提前谢谢。

1 个答案:

答案 0 :(得分:4)

我希望,这段代码可以解决你的问题

Review.find()
.populate('user', null, { roles:"admin" })
.exec(function (err, review) {
    if(err) {
        console.log(err);
        res.json(err);
    }else {
        var review = review.filter(function (review) {
                    return review.user !== null;
                 }).pop();
       console.log(review);          
       res.json(review);
   }
});