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

How to dynamically create postgreSQL connection pools in node.js using the node-postgres package and export them for usage

我有一个应用程序,我需要为订阅使用该应用程序的新公司创建一个新数据库。所以我正在维护一个主数据库,用于存储这家公司的列表及其各自的数据库名称。现在当新公司需要使用这个新订阅的应用程序时,我需要为他们的数据库创建一个新的 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();