Mongojscallback没有返回

我使用mongojs来更新mongodb集合中的数据。 程序逐行读取一个文件,并在mongodb数据库中对每一行进行更新。 更新工作正常,但控制不会返回。

var fs = require('fs') var reader = require('buffered-reader'); var dataReader = reader.DataReader; var mongojs = require('mongojs') var db = mongojs.connect('testdb'); var col = db.collection('testCollection'); var file = "sample.txt"; var loadData = function (line) { record = line.split(","); rec_key = record[1]; col.update( {rec_key: rec_key}, {rec_key: rec_key, data: 5678}, {upsert:true}, function(err){}); } new dataReader (file, { encoding: "utf8" }) .on ("error", function(error){ console.log ("error: " + error); }) .on ("line", loadData ) .on ("end", function (end){ console.log("EOF"); }).read(); 

从节点运行完这个之后,控件不会返回。 该程序无限期运行。 如果我在dataReader中注释loadData函数,它可以正常工作,程序在遍历所有行后结束。

在遍历所有行并在MongoDB中进行更新后,如何使程序结束?

您需要在完成MongoDB连接时closuresMongoDB连接,否则将会使程序处于打开状态。

就像是:

 .on ("end", function (end){ console.log("EOF"); db.close(); } 
  col.update( {rec_key: rec_key}, {rec_key: rec_key, data: 5678}, {upsert:true}, function(err){ if(err) //return false else //return true }); 

我build议您尝试使用node.js原生驱动程序,而不是使用最新版本。