如何满足条件时如何更新文档?

时间:2018-03-09 11:30:50

标签: javascript node.js mongodb express mongoose

我正在尝试在快速API中实现put方法,以便允许用户更新文档,但仅限于满足条件。假设我有一份Instance文件。其中一个属性是executed,如果实例是执行,则可以是true,如果不是,则可以是falseexecuted基本上我想允许用户仅在实例尚未执行时更新此文档,如果pre属性为false,则允许用户更新。

我已经提出了这种方法,但我想知道是否有更好的方法来做到这一点,例如,在架构定义中使用Instance.findOne({'_id': req.params.id}, function(err, element){ if(!element.executed){ Instance.findOneAndUpdate({'_id': req.params.id}, {$set: req.body}, function(err, element){ ... }); } }) 函数。

{{1}}

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用更新方法,

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

答案 1 :(得分:1)

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

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}将返回更新的实例。

有关详细信息,请查看文档here