![](/img/trans.png)
[英]node.js mysql pool beginTransaction & connection
[英]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.