在Mongodb中执行三个操作,如果只有一个失败,则取消

我需要同时在三个不同的集合中存储一条logging,但是如果只是其中一个操作失败(出于任何原因),我将需要取消整个过程。 简而言之,我需要确保这个logging被正确地存储在每个三个集合中:我需要避免logging被存储在两个(或一个)集合中的情况。

这是我的实际代码:

var insertOne = function(data) { req.app.locals.db.collection('document_1').findOneAndUpdate({'id': data.id}, {$set: {'element': 'data.element}}, {returnOriginal: false}, function(err, result) { if (err) { console.log('error 1'); return; } if(result) insertTwo(data); }); } var insertTwo = function(data) { req.app.locals.db.collection('document_2').findOneAndUpdate({'id': data.id}, {$set: {'element': 'data.element}}, {returnOriginal: false}, function(err, result) { if (err) { console.log('error 2'); return; } if(result) insertThree(data); }); } var insertThree = function(data) { req.app.locals.db.collection('document_2').findOneAndUpdate({'id': data.id}, {$set: {'element': 'data.element}}, {returnOriginal: false}, function(err, result) { if (err) { console.log('error 3'); return; } if(result) console.log('success!'); }); } insertOne(mydata); 

谢谢。