Предполагая следующие 3 модели:
var CarSchema = new Schema({
name: {type: String},
partIds: [{type: Schema.Types.ObjectId, ref: 'Part'}],
});
var PartSchema = new Schema({
name: {type: String},
otherIds: [{type: Schema.Types.ObjectId, ref: 'Other'}],
});
var OtherSchema = new Schema({
name: {type: String}
});
Когда я запрашиваю для Cars, я могу заполнить детали:
Car.find().populate('partIds').exec(function(err, cars) {
// list of cars with partIds populated
});
Есть ли способ в мангусте заполнить otherIds в вложенных частях объектов для всех автомобилей.
Car.find().populate('partIds').exec(function(err, cars) {
// list of cars with partIds populated
// Try an populate nested
Part.populate(cars, {path: 'partIds.otherIds'}, function(err, cars) {
// This does not populate all the otherIds within each part for each car
});
});
Я могу, вероятно, перебирать каждую машину и пытаться заселить:
Car.find().populate('partIds').exec(function(err, cars) {
// list of cars with partIds populated
// Iterate all cars
cars.forEach(function(car) {
Part.populate(car, {path: 'partIds.otherIds'}, function(err, cars) {
// This does not populate all the otherIds within each part for each car
});
});
});
Проблема заключается в том, что я должен использовать lib, например async, чтобы сделать запрос заполнения для каждого и ждать, пока все не будут выполнены, а затем вернутся.
Можно обойтись без обхода всех автомобилей?