Скажем, у меня есть схема 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
(их структура не важна для этого вопроса. Как мне глубоко заполнить несколько полей Client
в одном вызове .populate()
?
Что я пробовал:
Manager.find()
.populate({
path: 'users',
populate: { path: 'cars' },
populate: { path: 'houses' }
});
и меня бы очень удивило, если бы это сработало (поскольку я перезаписываю ранее объявленный ключ populate
, переданный методу .populate()
). Мой пример, очевидно, возвращает заполненное поле houses
для каждого пользователя — последнее. Честно говоря, понятия не имею, ничего нет и в документах. Он вообще поддерживается? Я знаю, что это для "мелкого" заполнения, основываясь на моем примере:
User.populate('cars')
.populate('houses')
А что насчет глубокого?
Users.populate({ path: 'users', populate: { path: 'cars houses' } })
. Быть'cars houses'
как разделенный пробелами список путей на текущем уровне. По крайней мере, это верно для одного уровня, поэтому то же самое должно быть и для всего остального. - person Neil Lunn   schedule 01.09.2017.populate().populate()
, о котором вы упомянули. - person Neil Lunn   schedule 01.09.2017