繁体   English   中英

Node.js 中多个 Mysql 数据库的池连接

[英]Pool connection for Multiple Mysql Database in Node.js

我正在尝试创建一个多租户 node.js 应用程序(还有子域),其中每个用户在单个主机下都有自己的数据库(例如 rds 实例)。

因此,我将数据库移交给特定用户以访问该特定数据库会更容易。

所以我的问题是当用户请求 api 时,是否可以根据请求动态更改数据库名称。

我想到的一件事是使用可以访问所有数据库的凭据创建一个池连接,并在查询中添加数据库名称,这样我就可以实现我想要的,但是出于好奇是否有可能在创建连接池后添加数据库名称,而不将其添加到查询中。

我的解决方案:

select * from 'dbname'.users

我在找什么:

const pool = mysql.createPool({
    host: process.env.DB_HOST,
    user: process.env.DB_USERNAME,
    password: process.env.DB_PASSWORD,
    // database: process.env.DB_NAME, leaving out since db name should be dynamic
    connectionLimit: 5,
    supportBigNumbers: true,
});

在中间件中,当我需要访问数据库时,我应该能够根据请求设置数据库名称。

这背后的原因是,我创建了应用程序并编写了没有数据库名称的查询,现在我应该为我的应用程序中的每个查询添加逻辑。

阅读官方文档: https://github.com/mysqljs/mysql/blob/master/Readme.md#connection-options

提到数据库选项是可选的。 您可以在初始化池时放弃此选项,并在 SQL 查询中指定正确的数据库。 您无法在没有数据库配置的情况下创建池,然后将数据库设置为连接。 为此,您必须使用查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM