原谅我的noob问题我使用
angularjs发送具有不同字段的用户模型(json).它适用于sails.js的默认PUT.我覆盖了PUT,问题是我希望使用接收的
JSON更新模型,并对修改的模型进行一些处理.现在我不能更新模型
@H_502_2@User.update({
id: req.body.id
},{
req.body
},function(err,users) {
// Error handling
if (err) {
return console.log(err);
// Updated users successfully!
} else {
console.log("Users updated:",users);
}
});
请帮忙
编辑:
敲我的头在墙上好几天,问题解决了!我知道我的代码格式不是最好的
改变了:
@H_502_2@{ req.body }只是:
@H_502_2@req.body(没有大括号)
完整的代码段变成:
@H_502_2@User.update({ id: req.body.id },req.body,users) { // Error handling if (err) { return console.log(err); // Updated users successfully! } else { console.log("Users updated:",users); } });谢谢.
解决方法
所以你想出了你的问题,有些. req.body已经是一个对象.但是,在将其放入更新之前,您应该将其清理干净,然后保存对象.这有很多原因,但是当您只收到部分对象时,将使用Mongo替换集合中的对象,在您的示例中,用户可能会遇到这样的错误.当我将用户发送到前端时,我会把我不想像密码一样传输的东西剔除掉.另一个原因是Web应用程序开发的黄金法则 – 从不信任客户端!我会从以下的东西开始:
@H_502_2@var user = User.findOne(req.body.id).done(function(error,user) {
if(error) {
// do something with the error.
}
if(req.body.email) {
// validate whether the email address is valid?
// Then save it to the object.
user.email = req.body.email;
}
// Repeat for each eligible attribute,etc.
user.save(function(error) {
if(error) {
// do something with the error.
} else {
// value saved!
req.send(user);
}
});
});