Пн goose 'Заполнить' во вложенном массиве возвращает ноль - PullRequest
0 голосов
/ 21 июня 2020

Недавно я начал использовать параметр 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',
   } 
 })

Как я могу этого добиться? Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...