javascript - 如何使用 node-postgres 包在 node.js 中动态创建 postgreSQL 连接池并导出以供使用
问题描述
我有一个应用程序,我需要为订阅使用此应用程序的新公司创建一个新数据库。因此,我正在维护一个主数据库,该数据库存储该公司列表及其各自的数据库名称。现在,当新公司需要使用这个新订阅的应用程序时,我需要Pool
为他们的数据库创建一个新的以供使用。如何以编程方式创建它并将其导出node.js
?
我尝试了一种方法。我认为池是一个简单的对象,所以我尝试在创建数据库后创建它并将其存储在主数据库中,并在需要时尝试使用该池对象(一个池对我来说就足够了,我不想断开池,因为它应该 24/7 运行,这就是我存储它的原因)。但是当我尝试连接到它时,我失败了以下错误语句
TypeError: myPool.connect is not a function
因为一旦我将它作为 jsonb 存储在 masterdb 中,它就不再是一个池。
有关如何解决此问题的建议将很有帮助。
解决方案
// eg. poolBuilder
const { Pool } = require('pg')
const pools = new Map();
function getPool(companyName){
if(!pools.has(companyName){
pools.set(companyName, new Pool({
host: 'localhost',
user: 'database-user',
max: 20,
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 2000,
}))
}
return pools.get(companyName);
}
module.exports.getPool = getPool;
const {getPool} = require("poolBuilder");
const pool = getPool();
推荐阅读
- iptables - 具有相同 IP 的设备很少
- if-statement - 赛普拉斯:如何将文本值/文本元素与 .each() 进行比较
- python - 使用 Python 求解各向同性线性扩散平滑中的扩散 PDE
- excel - 将 Excel if 条件从 Excel 转换为 Python
- php - 仅为 WooCommerce 中的“客户保留订单”电子邮件通知编辑页眉和页脚
- javascript - 参数周围的 Javascript 花括号
- github - 从 GitHub API 页面中删除旧电子邮件
- sql - SQL 连接,使用 Pivot 聚合
- r - 如何在 R 中将特定变量组合在一起
- reactjs - 从 Django 静态文件在 ReactJS 中显示图像的正确方法