#mongodb #mongoose
#mongodb #mongoose
Вопрос:
Вот мой фрагмент кода.
router.post(
"/chapter/officers/edit/:id/:c_id",
async (req, res) => {
try {
const updateChapter = await Council.findOneAndUpdate(
{ "chapters._id": req.params.c_id },
{
"chapters.$.officers": req.body,
}
);
if (!updateChapter) return res.status(404).json({ msg: "Not found" });
res.json("Edit Success");
} catch (error) {
res.status(500).json({ msg: error.message });
}
}
);
Я планирую обновлять только одно конкретное поле за раз, НО когда я попытался отправить этот JSON из Postman
{
"grandTriskelion": "sample"
}
Другие заполненные значения полей становятся пустой строкой. Вот пример моего res.json
"_id": "5fc9cbb7ba7e2e2430c9a4d8",
"name": "Maria Aurora",
"code": "MA",
"chapters": [
{
"officers": {
"grandTriskelion": "sample",
"deputyGrandTriskelion": "",
"masterWilderOfTheWhip": ""
},
"_id": "5fca014e49fa3f2910794bb8",
"name": "Maria Aurora Community Based"
}
],
Я столкнулся с препятствием. Я новичок в стеке MERN.
Комментарии:
1. вам нужно сделать это вручную следующим
{ "chapters.$.officers.grandTriskelion": req.body.grandTriskelion }
образом: создайте одну логику для создания такого рода строки для обновления из ваших параметров тела.2. это мое первое решение, но вместо этого оно делает другие поля нулевыми.. спасибо за ответ, хотя я глубоко признателен.
3. Это должно сработать, вы можете проверить playground