dan*_*674 5 javascript mongoose mongodb nosql node.js
用户可以选择更新几个值中的任何一个——但是,如果他只传入{ name: "new name" },电子邮件和密码字段也会更新,但为“空”。
我怎样才能只更新 req.body 中实际提供的字段,其余的保持原样?
这是同时指定可以使用 POST 请求更新哪些字段 - 我避免只传递 req.body 因为我想限制这一点。
我的代码看起来像:
db.User.findOneAndUpdate({_id: req.params.id}, {
name: req.body.name,
email: req.body.emaill,
password: req.body.password
})
Run Code Online (Sandbox Code Playgroud)
使用类似 name: 的东西req.body.name && req.body.name来检查一个值是否未定义也会用“null”覆盖。
谢谢!
N-a*_*ate 11
首先准备更新对象:
let params = {
name: req.body.name,
email: req.body.emaill,
password: req.body.password
};
for(let prop in params) if(!params[prop]) delete params[prop]; //This will not handle intentionally setting to false, empty string, null, 0, or other falsey values.
db.User.findOneAndUpdate({_id: req.params.id}, params);
Run Code Online (Sandbox Code Playgroud)
或者,如果您的属性名称匹配:
let params = {};
for(let prop in req.body) if(req.body[prop]) params[prop] = req.body[prop];
db.User.findOneAndUpdate({_id: req.params.id}, params);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4542 次 |
| 最近记录: |