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

Updating optional fields with single query. mongoose & expressjs

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

路线

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 中显示的字段而不用空值覆盖数据库项。

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

你应该可以做到:

exports.updateUser = function(req, res){

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

只要你的req.body里面没有任何多余的东西。可能想先验证一下。