如何检查Node.js中是否存在MongoDB连接

我有一个MongoDB应用程序作为后端。 当应用程序启动时,我build立了连接,稍后根据请求使用它。

但是,如果同时我的数据库连接失败(即mongod崩溃),我该如何检查请求时间?

澄清一点:

  • 目前我有一个“api.js”,它做db.once('open', function../* setup */)
  • 根据要求,我做db.find(conditions, function(err, res) { if (err) ...else ...})

我想要做的是在db.find()子句之前检查连接是否存在。 所以,如果它closures,我可以尝试重新启动数据库连接。

PS我知道,我应该设置某种types的连接池或类似的,而不是始终保持连接活动,但现在它被设置为它。

你可以使用事件来处理它作为callback。
也许有你的全局variables,将确定它没有连接。

你可以有单独的db.js文件,这将作为模块。 而且你可以有function从它收集。

 var mongodb = require('mongodb'); var client; var collections = { }; new mongodb.Db( ... ).open((function (err, c) { if (!err) { client = c; client.on('close', function() { client = null; // clear client collections = { }; // clear old collections // connection closed }); } else { // error connecting } }); // get collection exports.get = function(name, callback) { if (client) { if (!collections[name]) { collections[name] = new mongodb.Collection(client, name); } callback(null, collections[name]); } else { // can perform reconnecting and then get collection and call callback callback(new Error('not connected')); } } 

所以要使用它:

 var db = require('./db.js'); db.get('users', function(err, collection) { if (!err) { collection.find({ ... } else { console.log(err); } }); 

对不起,只是注意到你正在使用mongoose,这可能会有所不同。