问题描述
||
我正在使用node-mongodb-native驱动程序,我正在寻找一种打开持久数据库连接的方法,而不是每次都打开/关闭它。
简化的连接可能看起来像这样...
var DB = new mongo.Db(\'vows\',new mongo.Server(\"127.0.0.1\",27017,{})),connection = DB.open(function(err,db) {
// Here we have access to db
});
如何使db对象可被应用程序中的任何模块访问?不必为每个模块分别打开连接?
可以使用module.exports完成吗?还是全局变量?
解决方法
编辑:不要使用猫鼬,使用
mongo-col
或mongo-client
之类的东西。然后在您的应用程序中打开一个客户端。我有一个“ 3”文件,可以导出正确打开和配置的mongo客户端。
Mongoose
是mongodb之上的坚实抽象,可让您更轻松地处理mongodb。值得一看。
您真正想做的是每次使用mongo进行任何操作时都重新打开客户端。
您没有保持与任何其他数据库的开放连接。
只需将您的ѭ5连同一些辅助功能/包装器功能一起放入模块中。
,我的解决方案:
getClient = function(cb) {
if(typeof client !== \"undefined\") {
return cb(null,client);
} else {
db.open(function(err,cli) {
client = cli;
getClient(cb);
});
}
}
现在,代替
db.open(function(err,client) {
...stuff...
});
做:
getClient(function(err,client) {
...stuff...
});
您的第一个数据库调用打开一个连接,其他人使用该连接。
顺便说一句:关于检查客户端是否还活着的建议?