@dis_ak
beginner in web-dev

Как вытащить данные из массива объектов?

Всем день добрый!
Я совсем новичок в бэке (и в разработке в принципе). Застрял на две недели с одной проблемой, которая возникла из-за моего незнания. Поэтому прошу экспертного мнения у знающих)
У меня есть коллекции в монго - Заказ и Товары. Айдишники им я сгенерировал через uuid (не знаю важная эта инфа или нет).

В объекте Заказа хранится массив товаров (items[]) с id и количеством конкретного товара:
Order = {
  _id: '123123123123123',
  items: [
    {
      _id: '0001',
      quantity: 1
    },
    {
      _id: '0002',
      quantity: 4
    }
  ]
}


Товары выглядит вот так:
Items = [
  {
    _id: '0001',
    title: 'Pizza',
    price: 650,
    description: 'Some text'
  },
  {
    _id: '0002',
    title: 'Pasta',
    price: 500,
    description: 'Some text'
  }
]


Вопрос: Как вытащить данные о товарах через id из списка товаров и записать их в заказ, чтобы отправить на фронт заказ с полной информацией о товарах? Включая название, цену и описанию.

Я пытался запускать циклы и использовать forEach — но результата не было. Обращение к конкретному item в Order получается (типа Order.items[0]._id), а вот в цикле (типа Order.items[i]._id) выдаёт ошибку, что Order.items[i] is undefined.

Код контроллера:
class testController {
    async getTestOrder(req, res) {
        try {
            const id = req.params.id
            const order = await Order.findOne({_id: id})
            const items = await Item.find({})
            for (let i =0; i < order.items.length; i++){
                 for (let j = 0; j < items.length; j++){
                      if(order.items[i]._id === items[j]._id){
                           order.items.push(items[j])      // не знаю как добавить новые данные, при это оставив quantity
                      }
                 }
            }
            res.send(order)
        } catch (error) {
            console.log(error);
            res.status(404).json({message: 'Order was not found'})
        }
    }
}


В итоге должен получится вот такой response на фронт:
Order = {
  _id: '123123123123123',
  items: [
    {
      _id: '0001',
      quantity: 1,
      title: 'Pizza',
      price: 650,
      description: 'Some text'
    },
    {
      _id: '0002',
      quantity: 4,
      title: 'Pasta',
      price: 500,
      description: 'Some text'
    }
  ]
}


Буду благодарен за помощь.
  • Вопрос задан
  • 355 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы