我正在尝试更新天气最高的状态,添加一个字段,但是当我尝试循环时,连接会关闭!它只进行第一次更新,但下一次更新
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!!!!
});
}
});
});
答案 0 :(得分:0)
请参阅此帖子了解解决方案Removing documents from a mongodb
正如有人写道:“你不应该使用throw for callback,throw对于函数堆栈是好的”