完成Mongo写入后,节点csv调用挂起
我使用Node来加载CSV文件,然后将其写入MongoDB数据库。 这实际上是工作,但脚本不退出! 这是核心:
function commute_process(csvstr, col_commute) { csv() .from(csvstr, {columns: true}) .transform(function(row) { // unimportant stuff return row; }) .on('record', function(row) { cleanedrow = // unimportant console.log(cleanedrow); col_commute.insert(cleanedrow, {w:1}, function(err, result) { assert.equal(null, err); }); }) .on('end', function(count){ console.log('Number of lines: '+count); }); console.log("end of commute_process()") };
csvstr
是一个很大的string。 col_commute
是一个Mongo集合。 每行的日志输出正常。 end
日志按预期发生(5000行)。 数据库具有正确的数据。 而…就是这样。 commute_process()的结束行不会发生。
为什么不?
这是因为mongo连接保持开放的可能性。 只需在结束事件内激发连接实例的close方法即可。 那么,如果还没有closuresrun process.exit()
解决scheme是添加一个callback来closuresMongo连接。 所以:
commute_process(body, col_commute, function() {db.close();});
那么,在这个function中:
.on('end', function(count){ console.log('Number of lines: '+count); cb(); });