【问题标题】:Mongojs callback not returningMongojs回调不返回
【发布时间】:2013-05-15 11:08:36
【问题描述】:

我正在使用 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 中进行更新后使程序结束?

【问题讨论】:

    标签: node.js mongodb mongojs


    【解决方案1】:

    您需要在完成后关闭 MongoDB 连接,否则程序会保持打开状态。

    类似:

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

    【讨论】:

      【解决方案2】:
         col.update(
          {rec_key: rec_key},
          {rec_key: rec_key,
           data: 5678},
          {upsert:true}, function(err){
              if(err)
                //return false
              else
                //return true
          });
      

      【讨论】:

      • 不起作用。我仍然面临同样的问题。程序无限期运行
      【解决方案3】:

      我建议您尝试使用 node.js 本机驱动程序,因为您可以使用最新版本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多