2013-05-15 5 views
1

mongojs를 사용하여 mongodb 컬렉션의 데이터를 업데이트하고 있습니다. 이 프로그램은 파일을 한 줄씩 읽고 각 줄마다 mongodb 데이터베이스에서 업데이트합니다. 업데이트가 제대로 작동하지만 컨트롤이 반환되지 않습니다.Mongojs 콜백이 반환되지 않습니다.

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에서 업데이트를 수행 한 후 프로그램을 끝내게하려면 어떻게해야합니까?

답변

1

MongoDB 연결이 끝나면 프로그램을 열어 두어야합니다. 같은

뭔가 :

.on ("end", function (end){ 
     console.log("EOF"); 
     db.close(); 
    } 
0
col.update(
    {rec_key: rec_key}, 
    {rec_key: rec_key, 
    data: 5678}, 
    {upsert:true}, function(err){ 
     if(err) 
      //return false 
     else 
      //return true 
    }); 
+0

작동하지 않습니다. 나는 여전히 같은 문제에 직면 해있다. 프로그램이 무기한 실행 됨 –

0

나는 최신 버전을 사용할 수 있습니다 당신이 기본 드라이버 대신 Node.js를 사용해보십시오 제안했다.

관련 문제