Mongodb与本机Node.js驱动程序出错

时间:2015-08-17 21:08:31

标签: node.js mongodb

我正在做一个家庭作业,下面的代码返回一个" 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);

代码执行完美且没有错误。出了什么问题???

0 个答案:

没有答案