【发布时间】:2018-02-10 13:49:54
【问题描述】:
说,我有Manager 架构:
{
name: { type: String },
clients: [{ type: Mongoose.Schema.ObjectId, ref: 'Client'}]
}
而且,我有 Client 架构:
{
name : { type String },
cars : [{ type: Mongoose.Schema.ObjectId, ref: 'Car' }],
houses: [{ type: Mongoose.Schema.ObjectId, ref: 'House' }]
}
还有Car 和House(它们的结构对此并不重要。我如何在单个.populate() 调用中深度填充多个Client 的字段?
我尝试了什么:
Manager.find()
.populate({
path: 'users',
populate: { path: 'cars' },
populate: { path: 'houses' }
});
如果它起作用,我真的会感到惊讶(因为我覆盖了之前声明的 populate 传递给 .populate() 方法的键)。我的示例显然返回每个用户填充的 houses 字段 - 最后一个。老实说,不知道,docs 也没有。它甚至支持吗?根据我的示例,我知道这是用于“浅”填充:
User.populate('cars')
.populate('houses')
深的呢?
【问题讨论】:
-
当然是
Users.populate({ path: 'users', populate: { path: 'cars houses' } })。将'cars houses'作为当前级别中以空格分隔的路径列表。至少对于单个级别来说是这样,所以对于其他任何事情来说肯定应该是一样的。 -
谢谢,它有帮助。我是否忽略了文档中的解释?
-
在文档开头的某处提到了空格分隔列表。它取代了你提到的
.populate().populate()。 -
好的,谢谢。考虑发布您的有用评论作为答案,它可能对其他人有所帮助。
标签: node.js mongodb mongoose mongoose-populate