如何检查mongodb数据库连接

时间:2012-08-22 13:54:42

标签: javascript node.js mongodb logging database

使用Node.js(monogdb,express和其他模块) 我想知道是否存在用于数据库连接的mongoose方法,例如,如果我打开连接var db = mongoose.connect('mongo://localhost/members');,那么我可以db.on('close', function(){ /*do stuffs here*/})

基本上,下面的函数负责从数据库获取用户列表并在数据库连接关闭时进行记录。

所以我需要if()中的某些内容来检查数据库连接或者只是在关闭时无法获取数据并进行日志记录。我试过if(docs != null)它似乎只是关闭了。任何建议将不胜感激!

var logger = require('bunyan');

var log = new logger({
name: "loggings",
streams: [  
    {
        level: 'error',
        path: 'test.log',   
    }
],
serializers: {
    err: logger.stdSerializers.err,
}

});

function(req, res){
memberModel.find(function(err, docs){
    if (/*connection is closed*/) {
        res.render('users.jade', { members: docs });    
    }else{
            try {
                throw new DatabaseError ("Error!");
            } catch (err){
                log.warn({err: err}, "Check database connection!");
            }
        res.render('index.jade');
    };
});
};

3 个答案:

答案 0 :(得分:0)

为什么要检查您关闭数据库连接的位置?如果它在那时关闭,则文档很可能为空。我想检查

if (!err) {
   res.render('users.jade', { members : docs });
} else { 
    /* throw err, etc */

是一个合理的课程。

由于您想在数据库连接关闭时记录,为什么不将记录功能附加到Db的“关闭”事件?

如果我误解并检查连接的状态是你真正想要的,那么我建议玩一下以下属性:

http://mongoosejs.com/docs/api.html#connection_Connection

(点击“显示代码”按钮)。连接的_closeCalled属性看起来可能就是您要检查的内容。

答案 1 :(得分:0)

您可以使用在服务器断开连接时会引发攻击的mongoose事件:

mongoose.connection.on('error', function (err) {
    console.log('Mongoose default connection error: ' + err);
   //HERE SERVE YOUR DISCONNECT WARNING PAGE AND LOGGER
});

mongoose.connection.on('disconnected', function () {
    console.log('Mongoose default connection disconnected');
   //HERE SERVE YOUR DISCONNECT WARNING PAGE AND LOGGER

});

答案 2 :(得分:0)

var uri = 'mongodb://localhost/user1';
var promise = mongooose.connect(uri,{
    useMongoClient: true,
    });

promise.openUri(uri,function(errr,db){
    if(errr){
        throw errr;
    }else{
        console.log("Connection Successfull");                  
        glo_db = db;
    }
});
  

上面可能需要为较新版本的mongoose编写,如果在连接数据库时发现任何错误,则会抛出错误。   Check here