【问题标题】:how to update nested object in array using nodejs with mongodb?如何使用带有 mongodb 的 nodejs 更新数组中的嵌套对象?
【发布时间】:2020-12-14 02:36:18
【问题描述】:

在MongoDB中我的数据库结构如下,

[{
    "_id": "",
    "courseTitle": "",
    "courseImage": "",
    "group": [
        {
            "_id": "",
            "title": "",
            "overView": "",
            "duration": "",
            "syllabus": []
        }
    ],
 }]

在我的节点 js 服务器中,我正在尝试使用 put 方法更新我的记录,这是我的路线

router.put("/:id/:gid", (req, res) => {
let updateRecord = {
title: req.body.title,
duration: req.body.duration,
overView: req.body.overView,
syllabus: req.body.syllabus,
};

我正在使用 findOne 来更新我的记录,

GroupCourse.findOne({ "group._id": req.params.gid }, function (error, data) {
if (error) {
  console.log(error);
  res.status(500).send();
} else {
  if (!data) {
    console.log("404");
    res.status(404).send();
  } else {
    if (data) {
      data = updateRecord;
  console.log("This is updated data", data)
    }

如果我 console.log(data),数据显示更新的值。 当我尝试使用以下代码保存数据时,它会抛出错误..

 data.save(function (error, updatedData) {
      if (!error) {
        console.log("This is Updated", updatedData);
         res.send(updatedData);
      }
      else {
        console.log(error);
        res.status(500).send();
      }
    });
    }
   }
 });
});

我正在使用 NodeJs 和 MongoDB 和 Postman 发送发送数据

【问题讨论】:

    标签: node.js reactjs mongodb express postman


    【解决方案1】:

    选项 1

    GroupCourse.update({'_id': req.params.id,'group._id': req.params.gid}, 
    {'$set': {
        'group.$.title': updateRecord.title,
        'group.$.duration': updateRecord.duration
    }}, function(err,response) {
      // check error and response
    }
    

    选项 2

    GroupCourse.findOne({'_id': req.params.id}).then(doc => {
      // can update parent
      // item.courseTitle= 'javascript'
      item = doc.group.id(req.params.gid );
      item["title"] = updateRecord.title;
      item["duration"] = updateRecord.duration;
      doc.save();
    
      //sent response to client
    }).catch(err => {
      // error
    });
    

    【讨论】:

      猜你喜欢
      • 2023-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2015-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多