繁体   English   中英

仅在满足条件的情况下如何更新文档?

[英]How to update a document only if a condition is met?

我试图在express API中实现put方法,以允许用户更新文档,但前提是要满足条件。 假设我有一个Instance文档。 它的一个属性被executed ,这可能是true ,如果该实例是执行或false ,如果它不是。 基本上,我希望仅当实例尚未执行时才允许用户更新此文档,即,如果executed属性为false。

我想出了这种方法,但是我想知道是否存在更好的方法,例如,使用架构定义中的pre函数。

Instance.findOne({'_id': req.params.id}, function(err, element){
    if(!element.executed){
        Instance.findOneAndUpdate({'_id': req.params.id}, {$set: req.body}, function(err, element){
            ...
        });
    }
})

谢谢!

您可以使用更新方法,

Instance.update({'_id': req.params.id, executed: false}, req.body, function(){})

如果要更新单个文档,可以使用:

Instance.findOneAndUpdate({
  '_id': req.params.id,
  executed: false
}, req.body, {
  new: true
}, (err, instance) => {
  if(err){
    console.error('error occurred', err);
  } else {
    console.log('updated instance', instance)
  }
});

{new: true}将返回更新的实例。

有关更多详细信息,请在此处查看文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM