在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-col
或mongo-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议?