2

我正在使用 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 集合。每行的日志正常输出。日志按预期发生(end5000 行)。数据库有正确的数据。而且……就是这样。“通勤进程结束()”行不会发生。

为什么不?

4

2 回答 2

1

这是因为 mongo 连接可能保持打开状态。只需在结束事件中触发连接实例的关闭方法。然后,如果它仍然没有关闭运行 process.exit()

于 2013-10-15T01:53:32.613 回答
1

The solution was to add a callback to close the Mongo connection. So:

commute_process(body, col_commute, function() {db.close();});

Then, in that function:

.on('end', function(count){
  console.log('Number of lines: '+count);
  cb();
});
于 2013-10-15T11:25:33.147 回答