#node.js #mongodb #express #mongoose #postman
#node.js #mongodb #экспресс #мангуст #postman
Вопрос:
Мой объект
{
"_id": "5fc49f48502ed001f437f49b",
"students": [
{
"_id": "5fc49f48502ed001f437f49c",
"name": "John",
"class: "5",
"age": "9"
},
{
"_id": "5fc49f48502ed001f437f49d",
"name": "Richa",
"class: "7",
"age": "13"
}
]
}
Мой код обновления:
router.put("/:id/:studetid", async (req, res) => {
try {
const student= await Student.update(
{ "students._id": req.params.studentid},
{
$set: {
"students.$.name": req.body.name,
"students.$.class": req.body.class,
"students.$.age": req.body.age,
},
}
);
Когда я выбираю id и обновляю любой объект формы значения, значение обновляется успешно, но другое значение, которое не является обновлением, устанавливается равным нулю..
{
"_id": "5fc49f48502ed001f437f49b",
"students": [
{
"_id": "5fc49f48502ed001f437f49c",
"name": null,
"class: "6",
"age": null
},
}
Пожалуйста, кто-нибудь может помочь мне решить эту проблему…Я хочу динамически обновлять данные…Я использую Postman для отправки данных
Комментарии:
1. какой модуль вы используете для обновления MangoDB не могли бы вы добавить более подробную информацию о том, какую библиотеку вы используете
2. @PDHide: не по теме — но «MangoDB» на самом деле было бы потрясающим именем вместо MongoDB ха-ха, теперь я жажду манго: D
3. Будем надеяться на лучшее
Ответ №1:
У вас было неправильное имя переменной в URL.
router.put("/:id/:studetid", async (req, res) => {
должно быть
router.put("/:id/:studentid", async (req, res) => {
Это будет работать
await Student.update(
{ "_id": req.params.studentid},
{
$set: {
"name": req.body.name,
"class": req.body.class,
"age": req.body.age,
},
}
);