Как я понимаю, вы пытаетесь создать новое меню с заданными элементами меню.
Таким образом, вы делаете это просто так: (нет необходимости в цикле)
router.post("/create-menu-and-items", async (req, res, next) => {
try {
const { description, title, notes, _menuItems } = req.body;
let menu = new Menu({ description, title, notes, _menuItems });
menu = await menu.save();
res.status(201).send(menu);
} catch (err) {
console.log(err);
res.status(422).send(err);
}
});
При этом при публикации на этот URL-адрес ответ будет таким (я предполагаю, что вы отправите существующие идентификаторы пунктов меню в теле:
{
"_menuItems": [
"5dc81674ed5a8a3f78356779",
"5dc81680ed5a8a3f7835677a",
"5dc8168bed5a8a3f7835677b"
],
"_id": "5dc8180990b714224462fb2b",
"description": "Menu 1 description",
"title": "Menu 1 title",
"notes": "Menu 1 notes",
"__v": 0
}
Это будет дополнительная информация, но если в будущемВы хотите добавить пункты меню в существующее меню, вы можете сделать так:
router.post("/add-menu-items-to-menu/:id", async (req, res, next) => {
try {
const { _menuItems } = req.body;
let menu = await Menu.findByIdAndUpdate(req.params.id, { $push: { _menuItems } }, { new: true });
if (menu) {
res.status(200).send(menu);
} else {
res.status(400).send("Menu not found for this id");
}
} catch (err) {
console.log(err);
res.status(422).send(err);
}
});
Тело:
{
"_menuItems": ["5dc81694ed5a8a3f7835677c", "5dc816a5ed5a8a3f7835677d"]
}
Ответ:
{
"_menuItems": [
"5dc81674ed5a8a3f78356779",
"5dc81680ed5a8a3f7835677a",
"5dc8168bed5a8a3f7835677b",
"5dc81694ed5a8a3f7835677c",
"5dc816a5ed5a8a3f7835677d"
],
"_id": "5dc81b134c92ae2884c2468c",
"description": "Menu 1 description",
"title": "Menu 1 title",
"notes": "Menu 1 notes",
"__v": 0
}