我正在做一个家庭作业,下面的代码返回一个" null"过早地(在光标耗尽之前),并且因为我已经关闭了数据库而使程序崩溃到下一个值:
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017/weather', function(err, db) {
if(err) throw err;
var query = {};
var cursor = db.collection('data').find(query).sort({'State' : 1, Temperature : -1});
var currentState = '';
var lastState = '';
cursor.each(function(err, doc) {
if(err) throw err;
if(doc == null) {
//console.log(doc.State)
return db.close();
}
if(doc != null){
currentState = doc.State;
if(currentState != lastState){
var query2 = {"_id" : doc._id};
doc['month_high'] = true;
db.collection('data').update(query2, doc, function(err,updated){
if(err) throw err;
console.dir("Successfully Updated " + updated + "documents");
});
}
lastState = doc.State;
}
});
});
HOWEVER !! 如果我将光标的批量大小限制为10或20,则将一行代码更改为:
var cursor = db.collection('data').find(query).sort({'State' : 1, Temperature : -1}).batchSize(20);
代码执行完美且没有错误。出了什么问题???