我有一个请求,请求体包含data和_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})
})
}
字符串
我在想也许有更好的办法。
3条答案
按热度按时间7dl7o3gd1#
你可以用一个upsert来做到这一点:
字符串
需要注意的是,您的模型的默认值和中间件(如果有的话)将不会被应用。
Mongoose 4.x更新
如果upsert创建了一个新文档,现在可以使用
setDefaultOnInsert
选项来应用默认值。型
dced5bon2#
字符串
wgeznvg73#
由于
update
函数在新版本中被弃用,因此updateOne
或findOneAndUpdate
可以这样使用:字符串