Zla*_*tko 7 mongoose mongodb node.js
我有一个MongoDB的应用程序作为后端.当应用程序启动时,我会设置连接并在以后的请求中使用它.
但是,如果同时我的db conncetion失败(即mongod崩溃),我如何在请求时间检查?
澄清一下:
db.once('open', function../* setup */) db.find(conditions, function(err, res) { if (err) ...else ...}).我想要做的是在db.find()子句之前检查连接是否存在.因此,如果它关闭,我可以尝试重新启动数据库连接.
PS我知道,我应该设置一些连接池或类似的连接池,而不是一直保持连接,但现在它设置为原样.
您可以使用事件将其作为回调来处理.
并且可能有你的全局变量来识别它没有连接.
您可以拥有单独的db.js文件,它将作为模块运行.你可以有功能从中获取收集.
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'));
}
}
Run Code Online (Sandbox Code Playgroud)
所以要使用它:
var db = require('./db.js');
db.get('users', function(err, collection) {
if (!err) {
collection.find({ ...
} else {
console.log(err);
}
});
Run Code Online (Sandbox Code Playgroud)
对不起,刚刚注意到你使用的是Mongoose,它可能略有不同.
| 归档时间: |
|
| 查看次数: |
11200 次 |
| 最近记录: |