Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用单个查询更新可选字段。猫鼬;快车_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

Node.js 使用单个查询更新可选字段。猫鼬;快车

Node.js 使用单个查询更新可选字段。猫鼬;快车,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我有用户设置页面,我想允许用户从用户模式更新多个字段。是否可以根据已更新的字段使用单个查询更新用户集合项 路线 exports.updateUser = function(req, res){ User.update({_id: '123'}, { $set: { mail: req.body.mail, name: req.body.name, lastName: req.body.lastName, age: req.body.a

我有用户设置页面,我想允许用户从用户模式更新多个字段。是否可以根据已更新的字段使用单个查询更新用户集合项

路线

exports.updateUser = function(req, res){

  User.update({_id: '123'}, {
    $set: {
      mail: req.body.mail,
      name: req.body.name,
      lastName: req.body.lastName,
      age: req.body.age
      // ... and so on
    }
  })
}
如果用户仅更新电子邮件,则所有其他字段均为空或未定义

是否有任何方法仅更新req.body中显示的字段,而不使用空值覆盖db项


我知道可以为每个字段创建If语句,但可能有更好的解决方案?

您应该能够做到:

exports.updateUser = function(req, res){

  User.update({_id: '123'}, {
    $set: req.body
  })
}

只要您的
req.body
中没有任何额外内容。您可能想先验证它。

您应该能够执行以下操作:

exports.updateUser = function(req, res){

  User.update({_id: '123'}, {
    $set: req.body
  })
}

只要您的
req.body
中没有任何额外内容。您可能想先验证它。

这样它将只更新req.body中可用的字段?听起来很简单:)谢谢!是的,但是你基本上是给你的用户自由添加他们喜欢的内容。您需要首先验证
req.body
中的信息。因此它将更新,只更新req.body中可用的字段?听起来很简单:)谢谢!是的,但是你基本上是给你的用户自由添加他们喜欢的内容。您需要首先验证
req.body
中的信息。