gpt4 book ai didi

node.js - 更新模型实例

转载 作者:太空宇宙 更新时间:2023-11-03 23:10:25 24 4
gpt4 key购买 nike

我想了解使用 mongoose 更新模型实例的正确方法是什么,即:

拥有:

User = {
username: {
type: String,
indexed: true
},
email: {
type: String,
indexed: true
},
name: String,
.........
};

我通过 ajax 将整个表单发送到 Controller 。
到目前为止,我知道有两种选择:

app.put('/users/', function(req, res){
var id = ObjectId(req.body._id);
User.findOne({_id: id}, function(err, user){
user.name = req.body.name;
....
....
user.save();
});
});

或者:

app.put('/users/', function(req, res){
var id = ObjectId(req.body._id);
delete req.body._id
User.update({_id: id}, req.body, function(err){
.....
};
});

两种方式都有缺点:
在第一种方法中,我必须逐个映射所有属性;
在第二种方法中,我必须删除所有无法更改的属性;
还有第三种可能的方法,可以让我从客户端发送仅更改的属性,但我认为这会很麻烦。

有没有一种我没有看到的好的、标准化的方法来做到这一点?

谢谢

最佳答案

这是我通常使用的方法,它涉及一个名为 mongoose-mass-assignment 的小型 npm 包:

https://github.com/bhelx/mongoose-mass-assignment

这些文档非常不言自明,易于使用。它基本上会为您执行删除操作。因此,您将 protected:true 添加到模型中,然后它会为您删除这些属性。我喜欢这种方法,因为它仍然允许我按原样使用 req.body。您也可以使用它进行更新和插入。

关于node.js - 更新模型实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14986185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com