MongoDB连接提前结束

时间:2015-08-17 17:06:26

标签: node.js mongodb

var MongoClient = require("mongodb").MongoClient;
MongoClient.connect("mongodb://localhost:27017/test",function(err,db){
    if(err) throw err;
    var query = {};
    var projection = {State : 1,Temperature : 1,_id : 1};
    var options = {
        sort : [["State","asc"],["Temperature","desc"]]
    };
    var state = "";
    var temp = 0;
    db.collection("weather").find(query,projection,options).each(function(err,doc){
        if(err) throw err;
        if(doc){
            // Check if we have found a new state
            if(state !== doc.State){
                state = doc.State;
                doc["month_high"] = true;
                db.collection("weather").save(doc,function(err,saved){
                    if(err) throw err;
                });
            }
        }else{
            return db.close();
        }
    });
});  

这是我的代码,我必须更新符合条件的某些文档。而不是存储需要更新的所有文档,然后在以后更新它们,我会在它们到来时更新它们。

但是,我得到MongoError: server localhost:27017 sockets closed。我知道这是因为我正在尝试使用已经关闭的连接。

如何正确排序数据库的关闭和更新文档?

1 个答案:

答案 0 :(得分:1)

当您致电db.save()

时,您的上一个db.close()似乎仍在处理中

检查您是否正在处理最后一项,然后在db.close()回调中致电db.save()