首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongojs回调不返回

Mongojs回调不返回
EN

Stack Overflow用户
提问于 2013-05-15 19:08:37
回答 3查看 662关注 0票数 1

我正在使用mongojs更新mongodb集合中的数据。该程序逐行读取文件,并针对每一行在mongodb数据库中进行更新。更新工作正常,但是控件没有返回。

代码语言:javascript
复制
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中进行更新后结束?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-15 21:09:51

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

类似于:

代码语言:javascript
复制
.on ("end", function (end){
        console.log("EOF");
        db.close();
    }
票数 1
EN

Stack Overflow用户

发布于 2013-05-15 19:15:54

代码语言:javascript
复制
   col.update(
    {rec_key: rec_key},
    {rec_key: rec_key,
     data: 5678},
    {upsert:true}, function(err){
        if(err)
          //return false
        else
          //return true
    });
票数 0
EN

Stack Overflow用户

发布于 2013-05-16 00:19:23

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16563433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档