Всем день добрый!
Я совсем новичок в бэке (и в разработке в принципе). Застрял на две недели с одной проблемой, которая возникла из-за моего незнания. Поэтому прошу экспертного мнения у знающих)
У меня есть коллекции в монго - Заказ и Товары. Айдишники им я сгенерировал через 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'
}
]
}
Буду благодарен за помощь.