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原生驱动程序,而不是使用最新版本。