sails.js:如何更新模型

时间:2013-09-13 20:23:11

标签: json mongodb angularjs sails.js

原谅我的菜鸟问题。我正在使用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);
}
 });

感谢。

1 个答案:

答案 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);
        }
    });
});