Giả sử 3 mô hình sau:Mongoose cư lồng mảng
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}
});
Khi tôi truy vấn cho Ô tô tôi có thể cư trú trong các phần:
Car.find().populate('partIds').exec(function(err, cars) {
// list of cars with partIds populated
});
Có cách nào trong mongoose để cư otherIds trong các bộ phận lồng nhau đối tượng cho tất cả các xe ô tô.
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
});
});
tôi có lẽ có thể lặp qua mỗi xe và cố gắng cư:
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
});
});
});
Vấn đề có là tôi phải sử dụng một lib như async để thực hiện cuộc gọi điền để mỗi và chờ đợi cho đến khi tất cả đều xong rồi quay lại.
Có thể thực hiện mà không bị lặp trên tất cả các xe ô tô?
phương pháp populate này này diễn ra bên trong get/post tuyến đường của bạn có đúng không? – Winnemucca