Как обновить массив объекта с помощью node с помощью mongodb и postman?

#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,
    },
  }
);