原谅我的noob问题我使用
angularjs发送具有不同字段的用户模型(json).它适用于sails.js的默认PUT.我覆盖了PUT,问题是我希望使用接收的
JSON更新模型,并对修改的模型进行一些处理.现在我不能更新模型
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); } });
请帮忙
编辑:
敲我的头在墙上好几天,问题解决了!我知道我的代码格式不是最好的
改变了:
{ req.body }
只是:
req.body
(没有大括号)
完整的代码段变成:
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应用程序开发的黄金法则 – 从不信任客户端!我会从以下的东西开始:
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); } }); });