我正在使用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中进行更新后结束?
发布于 2013-05-15 21:09:51
您需要在使用完MongoDB连接后关闭它,否则它将使程序保持打开状态。
类似于:
.on ("end", function (end){
console.log("EOF");
db.close();
}发布于 2013-05-15 19:15:54
col.update(
{rec_key: rec_key},
{rec_key: rec_key,
data: 5678},
{upsert:true}, function(err){
if(err)
//return false
else
//return true
});发布于 2013-05-16 00:19:23
我建议您尝试使用node.js本机驱动程序,因为您可以使用最新版本。
https://stackoverflow.com/questions/16563433
复制相似问题