我正在使用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
是一个很大的字符串。 col_commute
是一个Mongo集合。每行的日志正常输出。 end
日志按预期发生(5000行)。数据库具有正确的数据。而且......就是这样。 “commute_process()”行的结束不会发生。
为什么不呢?
答案 0 :(得分:1)
因为mongo连接可能会保持打开状态。只需在结束事件中触发连接实例的close方法。然后,如果它仍然没有关闭运行process.exit()
答案 1 :(得分:1)
解决方案是添加一个回调来关闭Mongo连接。所以:
commute_process(body, col_commute, function() {db.close();});
然后,在那个功能中:
.on('end', function(count){
console.log('Number of lines: '+count);
cb();
});