【问题标题】:how to check monogdb database connection如何检查mongodb数据库连接
【发布时间】:2012-08-17 23:20:07
【问题描述】:

使用 Node.js(monogdb、express 和其他模块) 我想知道是否有用于数据库连接的猫鼬方法,例如如果我打开一个连接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');
    };
});
};

【问题讨论】:

    标签: javascript node.js mongodb logging database


    【解决方案1】:

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

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

    是一个合理的课程。

    既然要在数据库连接关闭时记录,为什么不给数据库的“关闭”事件附加一个记录功能呢?

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

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

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

    【讨论】:

      【解决方案2】:

      您可以使用 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
      
      });
      

      【讨论】:

        【解决方案3】:
        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

        【讨论】:

          猜你喜欢
          • 2023-03-19
          • 2021-08-17
          • 1970-01-01
          • 2021-01-01
          • 2011-08-03
          • 2012-08-26
          • 2016-11-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多