Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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 如何使用node postgres包在node.js中动态创建postgreSQL连接池并将其导出以供使用_Javascript_Node.js_Postgresql_Node Postgres - Fatal编程技术网

Javascript 如何使用node postgres包在node.js中动态创建postgreSQL连接池并将其导出以供使用

Javascript 如何使用node postgres包在node.js中动态创建postgreSQL连接池并将其导出以供使用,javascript,node.js,postgresql,node-postgres,Javascript,Node.js,Postgresql,Node Postgres,我有一个应用程序,我需要为订阅此应用程序的新公司创建一个新数据库。因此,我正在维护一个主数据库,其中存储该公司列表及其各自的数据库名称。现在,当新公司需要使用这个新订阅的应用程序时,我需要为他们的数据库创建一个新的池,以供使用。如何以编程方式创建它并将其导出到node.js 我试过一种方法。我认为池是一个简单的对象,所以我尝试在创建数据库后创建它,并将其存储在主数据库中,并尝试在需要时使用该池对象(一个池就足够了,我不想断开池的连接,因为它应该全天候运行,这就是我存储它的原因)。但是,当我尝试连

我有一个应用程序,我需要为订阅此应用程序的新公司创建一个新数据库。因此,我正在维护一个主数据库,其中存储该公司列表及其各自的数据库名称。现在,当新公司需要使用这个新订阅的应用程序时,我需要为他们的数据库创建一个新的
,以供使用。如何以编程方式创建它并将其导出到
node.js

我试过一种方法。我认为池是一个简单的对象,所以我尝试在创建数据库后创建它,并将其存储在主数据库中,并尝试在需要时使用该池对象(一个池就足够了,我不想断开池的连接,因为它应该全天候运行,这就是我存储它的原因)。但是,当我尝试连接到它时,由于以下错误语句而失败

TypeError:myPool.connect不是一个函数

因为一旦我将它存储为masterdb中的jsonb,它就不再是一个池

关于如何实现这一点的建议将很有帮助。

//例如,poolBuilder
const{Pool}=require('pg')
常量池=新映射();
函数getPool(companyName){
如果(!pools.has)(公司名称){
pools.set(公司名称,新池({
主机:“localhost”,
用户:'数据库用户',
最高:20,
idleTimeoutMillis:30000,
connectionTimeoutMillis:2000,
}))
}
返回池。get(companyName);
}
module.exports.getPool=getPool;
const{getPool}=require(“池生成器”);
constpool=getPool();

from just create new Pool(配置)并传递主机、用户、超时等,您就有了新的池对象。您可以在任何函数中创建它,然后从该函数返回它。如果yourPool.connect不是函数,那么您的池可能不是池。注意:我的问题是如何以编程方式创建该池并将其导出到其他文件。我不应该每次使用时都创建该池它。我需要在创建新数据库时创建一次并将其导出。我还需要能够访问以前的池。基本上,我需要在某处存储并导出多个池。
!pool
的诀窍是不会多次创建池。谢谢。现在,我将该池变量作为对象,如果(pool.companyName===未定义)在代码中,并返回pool.companyName。对吗?是的。如果需要更多池,可以将它们存储在object中,也可以作为字典存储,这意味着新映射()。但也可以是object