在NodeJS中打开持久(mongo)数据库连接的最佳方法是什么?

我正在使用节点mongodb本地驱动程序,我正在寻找一种方式来打开一个持久的数据库连接,而不是每次打开/closures它。

简化的连接可能看起来像这样…

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完成吗? 还是一个全局variables?

编辑:不要使用mongoose,使用像mongo-colmongo-client 。 然后在您的应用程序中打开一个客户端。 我有./client.js文件,导出一个正确打开和configuration的mongo客户端。


Mongoose是在mongodb顶部的一个固定的抽象,将允许您更容易地处理mongodb。 这是值得一看。

你真正想做的事情是每当你用mongo做任何事情时重新打开你的客户端。

您不保留与任何其他数据库的开放连接。

只需将您的DB与一些帮助程序/包装函数一起放入模块中即可。

我的解决scheme

 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... }); 

你的第一个数据库调用打开一个连接,其他人使用该连接。

顺便说一句:关于检查客户还活着的build议?