即使我尝试关闭所有连接,我的节点脚本也不会终止。当然我可以用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
}
}
});
}
}
});
提前谢谢。