2017-07-16 3 views
2

Je veux maintenir atomicity dans ma base de données mongodb où si je mets à jour un tableau dans mon document et si elle réussit alors l'autre document serait mise à jour sinon si n'importe quel document échoue alors aucun document ne devrait être mis à jour.Maintenir l'atomicité dans mongodb

Je ne suis pas capable de comprendre comment implémenter cela en utilisant mongoClient dans mon application nodejs.

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)); 
 
      } 
 
     }); 
 
     
 
});

Donc, si la première requête échoue alors deuxième ne serait pas courir et atomicité sera maintenue mais si la première requête exécute et seconde échoue, l'atomicité ne sera pas maintenu. Aidez-moi à comprendre l'implémentation correcte.

merci

Répondre

1

Cochez ce lien pour la transaction mongodb. Je pense que c'est ce dont tu as besoin.

https://docs.mongodb.com/manual/core/write-operations-atomicity/

+0

conditionnelle je parle d'effectuer des mises à jour dans deux documents différents. L'opérateur $ isolé aide lorsque plusieurs mises à jour doivent être effectuées dans un seul document. –