Node.js 在Mongodb中执行三个操作,如果只有一个操作失败,则取消
我需要同时在三个不同的集合中存储一条记录,但我需要,如果其中一个操作失败(出于任何原因),整个过程将被取消。简而言之,我需要确保这条记录正确地存储在所有三个集合中:我需要避免记录只存储在两个(或一个)集合中的情况 这是我的实际代码:Node.js 在Mongodb中执行三个操作,如果只有一个操作失败,则取消,node.js,mongodb,Node.js,Mongodb,我需要同时在三个不同的集合中存储一条记录,但我需要,如果其中一个操作失败(出于任何原因),整个过程将被取消。简而言之,我需要确保这条记录正确地存储在所有三个集合中:我需要避免记录只存储在两个(或一个)集合中的情况 这是我的实际代码: var insertOne = function(data) { req.app.locals.db.collection('document_1').findOneAndUpdate({'id': data.id}, {$set: {'element':
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);
谢谢。通过默认的“有序”操作明确地做到了这一点。但您不能“查找并取消”。这是一个“全部更新”或“无更新”操作,如果您想“检索”文档,这是一个单独的操作。实际上不是。您需要跨集合进行查询。没有办法做到这一点,你需要处理好自己。如果它在“一”集合中,那么它就是
.bulkWrite()
。也许您应该为这些数据创建一个集合。为什么要跨越“两个”系列?