db.close()之后nodejs不会终止

时间:2017-01-16 15:44:14

标签: node.js mongodb mongoskin

即使我尝试关闭所有连接,我的节点脚本也不会终止。当然我可以用process.exit终止它,但我想知道这背后的原因是什么。 wtfnode插件显示我有很多开放的mongo连接。似乎每个数据库插入都有自己的。

代码:

var fn = function getFromDb(dbName) {
    return new Promise(function(resolve, reject) {
        var sourceDB = mongo.db(dbName);
        sourceDB.collection(coll).find().toArray(function(err, result) {
            sourceDB.close();
            if (err) {
                reject(err);
            } else {
                resolve([result, dbName]);
            }
        });
    });
}
var actions = inputDbArr.map(fn);

var results = Promise.all(actions);

results.then(data => { 
    for (var i in data) {
        for (var k in data[i][0]) {
            data[i][0][k].city = data[i][1];
            destinationDB = mongo.db(destDBName);
            destinationDB.collection(destColl).insert(data[i][0][k], function(err, result) {
                if (err) {
                    throw err;
                } else {
                    if (i == data.length - 1 && k == data[i][0].length - 1) {
                        destinationDB.close();
                        process.exit(); //For some reason there are still open connections left
                    }
                }
            });
        }
    }
});

提前谢谢。

0 个答案:

没有答案