10

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

谢谢。

4

1 回答 1

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);
        }
    });
});
于 2013-12-19T13:35:11.393 回答