node.js - Mongojs 回调未返回

标签 node.js mongodb mongojs

我正在使用 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();

从 Node 运行此命令后,控制不会返回。该程序无限期地运行。如果我在 dataReader 中注释 loadData 函数,它工作正常,程序在迭代所有行后结束。

如何让程序在遍历所有行并在 mongodb 中进行更新后结束?

最佳答案

使用完毕后,您需要关闭 MongoDB 连接,否则程序将保持打开状态。

类似于:

.on ("end", function (end){
        console.log("EOF");
        db.close();
    }

关于node.js - Mongojs 回调未返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16563433/

相关文章:

node.js - 在 Heroku 中使用 Docker 部署 Node.js 上的 "Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch"

javascript - 蒙古语 DeadBeef .toArray() 以意外格式返回 _id

node.js - 为什么 Node.js 需要 Mongoose 或 Mongojs?

node.js - Nodejs - 检查 MongoDB 中的空对象并解析它

javascript - Lodash 反转 key 的方法 : values in object

node.js - 如何让 Heroku 识别我的文件系统中的应用程序?

ruby-on-rails - 使用 Mongo Mapper 的 Rails

node.js - Express session MongoDB 存储 : connect-mongo vs connect-mongodb-session

node.js - 在 mongodb 中插入当前日期时间

javascript - Parse.Promise 无法捕获错误