Mongoose / MongoDB - 删除和插入一个事务

时间:2017-07-17 20:11:08

标签: node.js mongodb mongoose

我想删除mongo集合中的某些文档集并插入新记录,如果插入失败我想要回滚删除。基本上,它既可以是也可以不是。有人知道什么是最好的方法。我使用的是mongoose和nodejs。

2 个答案:

答案 0 :(得分:1)

尝试使用promises。像isDeleted一样在您的架构中再插入一个字段。当您删除某些文档时将其设置为true并且在成功删除承诺的情况下,如果成功插入文档,则在需要时永久删除该记录。

喜欢这个

db.collection.findOneAndUpdate(query)
.exec()
.then(
     // write your insert logic here
     db.collection.insert(query)
    .exec()
    .then()
    .catch(
      //if anything goes wrong set isDeleted
       //to false again. 
    )
)
.catch() 

答案 1 :(得分:0)

我添加了一个隐藏的'标志,然后在某些记录上将标志设置为true,然后根据插入失败或成功删除隐藏对象或取消隐藏它们来插入新标记