说,我有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
(他们的结构对此事并不重要。如何在单{{1}中深入填充多个Client
字段打电话?
我尝试了什么:
.populate()
如果它有效,它会让我感到惊讶(因为我覆盖了传递给Manager.find()
.populate({
path: 'users',
populate: { path: 'cars' },
populate: { path: 'houses' }
});
方法的先前声明的populate
键)。我的示例显然返回每个用户填充的.populate()
字段 - 最后一个字段。老实说,不知道,docs 也没有。它甚至支持吗?我知道这是为了浅薄的#39;根据我的例子填充:
houses
深层呢?
答案 0 :(得分:5)
1)传递一组具有要填充的属性的对象:
Manager.find()
.populate({
path : 'users',
populate: [
{ path: 'cars' },
{ path: 'houses' }
]
});
此解决方案可以充分利用深度填充。考虑:
Manager.find()
.populate({
path : 'users',
populate: [
{ path: 'cars' },
{
path : 'houses',
populate: {
path : 'rooms',
populate: 'windows'
}
}
]
});
2)传递要填充的以空格分隔的集合的字符串:
Manager.find()
.populate({
path : 'users',
populate: 'cars houses'
});