Недавно я начал использовать параметр mon goose populate
для одного из моих запросов API, который отлично работает для стандартных объектов и схемы, но я изо всех сил пытаюсь заставить его работать для вложенного массива.
Моя схема выглядит следующим образом (это схема, которую я пытаюсь получить с помощью заполнить ):
const FoodSchema = new Schema( {
name: {type: String, required: true},
price: {type: String, required: true},
category: {type: String, required: true},
...
})
Тогда у меня есть:
const OrderFoodSchema = new Schema(
{
food: {type: Schema.Types.ObjectId, required: true, ref: 'food'},
quantity: {...},
price: {...},
},
{ _id: false });
&&
const OrderSchema = new Schema( {
customer: {...},
venue: {type: Schema.Types.ObjectId, required: true, ref: 'venue'},
foods: [OrderFoodSchema]
})
Мой запрос на получение данных:
return Order.findOne({ _id: order_id, customer: user._id })
.populate({path:'venue',select:['name','address','contact']})
.orFail()
.then(function(order) {
res.json(order)
})
.catch(next);
Приведенное выше заполнение отлично подходит для места проведения (вероятно, потому что я заполняю только один глубокий ). Но я не могу получить рабочее заполнение для Food, оно всегда возвращает null.
Я пробовал:
.populate('foods.food')
.populate({path:'foods.food'})
.populate({
path: 'foods',
populate: {
path: 'food',
}
})
Как я могу этого добиться? Спасибо.