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

Posted

技术标签:

【中文标题】如何在 mongoosejs 中深度填充多个路径?【英文标题】:How can I deep populate multiple paths in mongoosejs? 【发布时间】:2016-05-28 11:16:33 【问题描述】:

是否可以使用 mongoose 同时填充多个路径?我正在尝试做这样的事情:

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】:

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

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

【讨论】:

以上是关于如何在 mongoosejs 中深度填充多个路径?的主要内容,如果未能解决你的问题,请参考以下文章

MongooseJS 在填充后返回空数组

是否可以在 mongoosejs 模式中填充自引用?

填充嵌套引用的更好方法 mongoosejs

无法使用 mongoosejs 填充

mongoosejs 定义复杂模型

Mongoosejs:findById 比 findOne 快吗?