Nag*_*n R 6 mysql database postgresql node.js sequelize.js
实际上,我是在尝试了所有可能性和之前的问题答案后提出这个问题的。但是,我没有找到任何线索,这就是我问的原因
陈述 :
我在这里基于多租户架构工作。因此每个客户组织都需要拥有自己的数据库并且它们是相关的。因此,就我而言,我需要使用“'n'没有数据库”。为了解决我的情况,我需要根据每个用户对其各自数据库的请求动态建立数据库连接,并需要执行 CRUD 操作(注意:并发操作需要在自己的数据库上执行而不打扰其他数据库)。
我的偏好:
所以,最初我做了一些研究并计划使用Node + PostgreSQL + Sequelize
问题 :
然后我开始研究如何在每个 api 请求期间在续集中动态建立连接,但我什么也没找到。因为在所有教程和 stackoverflow 问题和答案中,数据库连接都不是完全动态的,续集连接是在应用程序初始化期间建立的,并且模型与续集数据库连接绑定(如果我的理解错误,请纠正我)。
解决方案 :
我搜索了续集的其他替代方案。然后,我在 postgresql 本机 pg 驱动程序的动态数据库连接中发现它就像
const pool = new Pool({
user: 'postgres',
host: '127.0.0.1',
database: 'todos-dev',
password: 'aaaaa',
port: 5432,
})
let query = 'SELECT * FROM "Todos"';
pool.query(query, (error, results) => {
if (error) {
throw error
}
pool.end();
res.status(200).json(results.rows)
})
Run Code Online (Sandbox Code Playgroud)
然后我发现查询是原始 SQL 而不是 ORM。
问题 :
小智 1
我也有同样的问题。多个数据库在同一个MYSQL中,每个数据库都有相同的模型定义。我检查了sequelize源代码,发现一个sequelize实例可以解决多个数据库连接的问题。
连接配置:
{
"username": "root",
"password": "123456",
"database": "",
"port": 3306,
"dialect": "MySQL"
}
Run Code Online (Sandbox Code Playgroud)
型号获取方式:
static getModel(modelType, dbname) {
let model = sequelize.models[module.name];
model.tableName = {
schema: dbname,
tableName: modelType
};
sequelize.dialect.supports.schemas = true;
return model;
}
Run Code Online (Sandbox Code Playgroud)
这允许您跨多个数据库动态查询。
| 归档时间: |
|
| 查看次数: |
2361 次 |
| 最近记录: |