如何在mongoosejs中深度填充多个路径?

时间:2016-02-16 23:27:42

标签: mongoose mongoose-populate

是否可以使用猫鼬同时填充多个路径?我想做这样的事情:

User.findById(_id)
  .populate({
    path:'friendIds',
    model:'User',
    populate: {
      path: 'reviewIds',
      model: 'Review',
      populate: [{
        path: 'userId',
        model: 'User'
      }, {
        path: 'locationId',
        model: 'Location'
      }]
    }
  })

用户的朋友是用户,有书面评论,有作者(用户)和位置。我正试图深入填充所有这些信息。以上是我最近的尝试,它不起作用。有没有办法做到这一点?

作为参考,如果我不想填充多个路径,它可以正常工作:

User.findById(_id)
  .populate({
    path:'friendIds',
    model:'User',
    populate: {
      path: 'reviewIds',
      model: 'Review',
      populate: {
        path: 'locationId',
        model: 'Location'
      }
    }
  })

但是我的评论没有填写用户。

详细了解mongoose docs中的深度填充。

1 个答案:

答案 0 :(得分:1)

是的,确实有效。我已经多次使用它了。这是一个例子:

Model.find()
.populate({
    path: 'replies',
    populate: [{
      path: 'user',
      select: 'displayName username'
    }, {
      path: 'replies',
      populate: {
        path: 'user',
        select: 'displayName username'
      }
    }]
}).exec(...