【问题标题】:How to update records in mongo db using node js [duplicate]如何使用节点 js 更新 mongo db 中的记录 [重复]
【发布时间】:2016-09-19 07:31:50
【问题描述】:

我的节点js代码,

  exports.updateprofiledetails = function (req, res) {
      console.log(req.body)
      var params = req.body;
      var item = 
      {
        firstname:params.firstname,
        lastname:params.lastname,
        phone:params.phone,
        street:params.street
      };console.log(item)
      var id = req.params.id;
      var record= db.collection('profile');
      record.updateOne({'_id':id},{$set:item},(err, result) => {
       if (err){ return console.log(err)
        }
          if(result){
              response = {status:'success',data:result};
            } else{
              response = {status:'fail',data:[]};
            }
          res.send(response);
      });

    };

从上面我只给出了 2(firstname,lastname) 字段,但剩余的字段(phone.street) 被分配了空值。有人可以帮我解决这个问题。

【问题讨论】:

  • 如果没有给出 phone 等的值,你到底想要什么?
  • 嗨 abdulbarik,我有一个包含 4 个字段的表单要更新,但我只更新了 2 个字段,因此剩余的 2 个字段更新为空............跨度>
  • 如果你不给任何值,它会保存为null,如果值为null,则在Schema中设置默认值
  • 完整的文档在db中是什么样子的?

标签: node.js mongodb express


【解决方案1】:

您可能想检查然后设置仅从前端发送的设置值,例如

exports.updateprofiledetails = function (req, res) {
  console.log(req.body)
  var params = req.body;
  var item = { }
  if(params.firstname)
    item.firstname = params.firstname;
  if(params.lastname)
    item.lastname = params.lastname;
  if(params.phone)
    item.phone = params.phone;
  if(params.street)
    item.street = params.street;
  console.log(item);
  var id = req.params.id;
  var record= db.collection('profile');
  record.updateOne({'_id':id},{$set:item},(err, result) => {
   if (err) { 
     return console.log(err)
   }
   if(result){
      response = {status:'success',data:result};
   } else{
      response = {status:'fail',data:[]};
   }
   res.send(response);
  });
};

【讨论】:

    【解决方案2】:

    您的代码一切正常。但是您需要确保字段 phone ,street 值存在于变量 item 中。因为您只有给 firstname & lastname from params。如果你不给 phone & street 价值strong>(通过 params)请从 item 变量中删除该字段。

    试试下面的代码,告诉我它的回报是什么

    exports.updateprofiledetails = function (req, res) {
          console.log(req.body)
          var params = req.body;
          var item = 
          {
            firstname:params.firstname,
            lastname:params.lastname       
          };
          console.log(item) // Ensure this variable have data
          var id = req.params.id;
          var record= db.collection('profile');
          record.updateOne({'_id':id},{$set:item},(err, result) => {
           if (err){ return console.log(err)
            }
              if(result){
                  response = {status:'success',data:result};
                } else{
                  response = {status:'fail',data:[]};
                }
              res.send(response);
          });
    
        };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 2023-04-01
      • 2014-05-03
      相关资源
      最近更新 更多