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

时间:2017-06-22 22:40:28

标签: node.js mongodb

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

这是我的实际代码:

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

感谢。

0 个答案:

没有答案