原谅我的菜鸟问题。我正在使用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
, function(err, users) {
// Error handling
if (err) {
return console.log(err);
// Updated users successfully!
} else {
console.log("Users updated:", users);
}
});
感谢。
答案 0 :(得分:15)
所以你想出了你的问题。 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);
}
});
});