У меня проблема с тем, что я не могу получить _id моих вложенных объектов в моем массиве. В частности, это часть моего массива объектов. Я хочу найти _id, скажем, ризотто, а затем динамически увеличивать количество заказов (из этого же объекта).
Я пытаюсь сделать это динамически, поскольку я попробовал идентификатор Risotto в req.body._id, и это нормально, но я не могу go пересылать и пытаться увеличивать ордера, когда получаю ноль .
По какой-то причине я получаю нулевое значение, и я думаю, что это вложенный документ, но я не уверен. Вот мой файл маршрута и схема тоже.
router.patch("/update", [auth], async (req, res) => {
const orderPlus = await MenuSchema.findByIdAndUpdate({ _id: '5e3b75f2a3d43821a0fb57f0' }, { $inc: { "food.0.orders": 1 }}, {new: true} );
//want to increment orders dynamically once id is found
//not sure how as its in its own seperate index in an array object
try {
res.status(200).send(orderPlus);
} catch (err) {
res.status(500).send(err);
}
});
Схема:
const FoodSchema = new Schema({
foodname: String,
orders: Number,
});
const MenuSchema = new Schema({
menuname: String,
menu_register: Number,
foods: [FoodSchema]
});
Вот возвращенная база данных JSON
{
"_id": "5e3b75f2a3d43821a0fb57ee",
"menuname": "main course",
"menu_register": 49,
"foods": [
{
"_id": "5e3b75f2a3d43821a0fb57f0",
"foodname": "Risotto",
"orders": 37
},
{
"_id": "5e3b75f2a3d43821a0fb57ef",
"foodname": "Tiramisu",
"orders": 11
}
],
"__v": 0
}
идентификатор для меню работает на его месте, но мне это не нужно, так как мне нужен доступ к продуктам subdocs. заранее спасибо.