Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在Mongodb中执行三个操作,如果只有一个操作失败,则取消_Node.js_Mongodb - Fatal编程技术网

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()
。也许您应该为这些数据创建一个集合。为什么要跨越“两个”系列?