Node中的Singleton MongoDB连接

时间:2015-04-20 09:57:06

标签: javascript node.js mongodb singleton database

在Node for Mongodb中设置单例的最佳方法是什么?我尝试了以下代码,但是在快速拨打大量电话时它不起作用。

单例不会在后续调用之前设置,因此它会尝试打开太多连接并最终失败。以下呼叫适用于不频繁的呼叫。

有人对这里的最佳做法有任何建议吗?

var db_singleon;

var getConnection= function getConnection(callback)
{
    if (db_singleton)
    { 
      callback(null,db_singleton);
    }
    else
    {
        var connURL = mongoURI; //set in env variables
        mongodb.connect(connURL,function(err,db){
            if(err)
                console.error("Error creating new connection "+err);
            else
            {
                db_singleton=db;    
                console.error("created new connection");
            }
            callback(err,db_singleton);
            return;
        });
    }
}

1 个答案:

答案 0 :(得分:3)

节点模块是他们自己的单例,只需在某处创建db模块:

var mongo = require('mongojs');
var config = require('path/to/config');
var connection = mongo.connect(config.connection, config.collections);

module.exports = connection;

然后require('path/to/db')在你的模型中等等。