gpt4 book ai didi

Mongoose .js : how to implement create or update?

转载 作者:行者123 更新时间:2023-12-02 10:48:49 25 4
gpt4 key购买 nike

我有一个请求,其正文包含数据和_id

实现代码的更好方法是什么,如果带有 _id 的记录存在,则将更新该代码,如果没有,则将创建一个记录?我的代码:

var obj = req.body;
Model.findById(obj._id, function(err, data){
if (!data){
var model = new Model(obj)
model.save(function(err, data){
res.send({method: 'create', error: err, data: data})
})
} else {
Model.findByIdAndUpdate(obj._id, obj, function(){
res.send({method: 'update', error: err, data: data})
})
}

我只是想也许有更好的方法来做到这一点。

最佳答案

您可以使用单个 upsert 来做到这一点:

var obj = req.body;
var id = obj._id;
delete obj._id;
if (id) {
Model.update({_id: id}, obj, {upsert: true}, function (err) {...});
}

需要注意的是,您的模型的默认值和中间件(如果有)将不会应用。

Mongoose 4.x 更新

您现在可以使用setDefaultOnInsert如果 upsert 创建新文档,也可以应用默认值。

Model.update({_id: id}, obj, {upsert: true, setDefaultsOnInsert: true}, cb);

关于 Mongoose .js : how to implement create or update?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13337685/

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