2014-06-17 70 views
0

我試圖更新最高的天氣狀態,添加一個字段,但是當我嘗試做循環時,連接關閉!它只是做了第一次更新,但未來它說MongoError:連接關閉的應用程序

MongoError:關閉通過應用

爲什麼連接?我沒有關閉連接。

var MongoClient = require('mongodb').MongoClient; 

MongoClient.connect('mongodb://localhost:27017/weather', function(err, db) { 
    var state = ""; 
    var query = {}; 
    if(err) throw err; 

    var grades = db.collection('data'); 

    var options = { 'sort' : [['State', 1], ['Temperature', -1]] }; 
    var cursor = grades.find({}, {}, options); 

    cursor.each(function(err, doc) { 
     if(err) throw err; 
     if(doc == null) { 
      return db.close(); 
     } 

     if(state != doc.State){ 
      state = doc.State; 
      console.dir(state); 


      query['_id'] = doc['_id']; 

      grades.update(query, {$set: {"month_high": true}}, function(err, updated){ 
       if(err) throw err; 

       console.dir("Se han modificado " + updated + " Elementos!"); 
       // return db.close(); I comment this line and this stills closing!!!! 
      }); 
     } 

    }); 
}); 
+3

還有一個'回db.close() '在你的代碼中可能會在其他成功操作完成之前關閉連接。另外,如果這些功能中的任何一個提供了「錯誤」,則拋出它們可能不會使它們看到。 「mongodb」的內部可以「捕捉」並處理它們,因爲它正在調用回調函數。嘗試記錄它們,而不是'return console.error('Error:',err);'。 –

回答

相關問題