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!!!!
            });
        }

    });
});

1 ответ

Смотрите этот пост для решения Удаление документов из mongodb

Как кто-то писал: "Вы не должны использовать throw для обратного вызова, throw это хорошо для стека функций"

Другие вопросы по тегам