Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点中的Singleton MongoDB连接_Javascript_Node.js_Mongodb_Singleton_Database - Fatal编程技术网

Javascript 节点中的Singleton MongoDB连接

Javascript 节点中的Singleton MongoDB连接,javascript,node.js,mongodb,singleton,database,Javascript,Node.js,Mongodb,Singleton,Database,为Mongodb在节点中设置singleton的最佳方法是什么?我尝试了以下代码,但在快速拨打大量电话时,它不起作用 在后续调用之前,不会设置singleton,因此它尝试打开太多连接,最终失败。下面的通话对于拨打不频繁的电话很有效 有人对这里的最佳实践有什么建议吗 var db_singleon; var getConnection= function getConnection(callback) { if (db_singleton) { callback(

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

在后续调用之前,不会设置singleton,因此它尝试打开太多连接,最终失败。下面的通话对于拨打不频繁的电话很有效

有人对这里的最佳实践有什么建议吗

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

节点模块本身是单例的,只需在某处创建
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')
将它放在您的模型中,等等。

这是有效的。我对它做了一些修改(即,我目前没有使用配置文件),但其原理正是我所需要的。感谢@Kosmetika提供的图案!