在sequelize和pg之间共享数据库连接池

dan*_*nvk 7 postgresql node.js sequelize.js

我有一个服务器,我用Express和node-postgres(pg)编写.它创建自己的数据库池:

const dbPool = new pg.Pool(dbConfig);
Run Code Online (Sandbox Code Playgroud)

并使用此连接直接运行SQL查询.

现在我正在添加一个新表和相应的REST API.我想用sequelizeepilogue来减少样板.不幸的是,sequelize想要创建自己的数据库连接池:

const sequelize = new Sequelize(database, user, password, config);
Run Code Online (Sandbox Code Playgroud)

是否可以重用现有的连接池,或者在现有pg代码和新sequelize代码之间共享?

Phi*_*ach 1

Sequelize 不提供传递自定义池的选项,但您可以传递将用于创建 Sequelize 池的选项,例如最小和最大连接。

对于您的情况,我要做的是检查您的数据库连接总数,并根据两个池的预期使用情况进行重新分区。

例如,如果数据库上最多有 20 个连接:

const dbPool = new pg.Pool({
  max: 10
});

const sequelize = new Sequelize(/* ... */, {
  // ...
  pool: {
    max: 10,
    min: 0,
    acquire: 30000,
    idle: 10000
  }
});
Run Code Online (Sandbox Code Playgroud)

我还建议使用环境变量来设置sequelize池和nod-pg池上的最大连接,以便您可以在需要时轻松调整重新分区。