2017-07-16 61 views
2

我想在我的mongodb数据库中保持原子性,如果我在文档中更新数组,并且成功,那么其他文档将更新,否则,如果任何文档失败,则不应更新文档。在mongodb中维护原子性

我无法理解如何在我的nodejs应用程序中使用mongoClient实现此功能。

secureRoutes.post("/sendrequest", function (req, res) { 
 
     MongoClient.connect(url, function (err, db) { 
 
      if (err) throw err; 
 
      else{ 
 
      db.collection('users').updateOne({_id:req.user['sub']},{$addToSet:{requested:req.body.id}},function(update1Err,update1Data){ 
 
       if (updateErr) throw updateErr; 
 
       else { 
 
        db.collection('users').updateOne({_id:req.body.id},{$addToSet:{pending:req.user['sub']}}); 
 
       } 
 
      }); 
 
      
 
      res.send(JSON.stringify(req.body.id)); 
 
      } 
 
     }); 
 
     
 
});

所以,如果第一次查询失败的话,第二个将无法运行和原子将保持不变,但如果第一查询执行和第二失败,那么该原子将不保。

帮我理解正确的实现。 谢谢

回答