使用单个查询更新可选字段。猫鼬& expressjs

时间:2015-04-09 15:36:13

标签: 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.age
      // ... and so on
    }
  })
}

如果用户仅更新电子邮件,则所有其他字段均为null或未定义。

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

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

1 个答案:

答案 0 :(得分:2)

你应该可以这样做:

exports.updateUser = function(req, res){

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

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