gpt4 book ai didi

mysql - Sequelize 中每个 api 调用期间的动态数据库连接,其中有 'n' 没有数据库

转载 作者:行者123 更新时间:2023-12-03 12:15:21 24 4
gpt4 key购买 nike

实际上,我在尝试了所有可能性和以前的问题答案后提出了这个问题。但是,我没有找到任何线索,这就是我问的原因

声明:

在这里,我基于 Multi-Tenancy 架构工作。所以每个客户组织都需要有自己的数据库,而且它们是相关的。因此,在我的情况下,我需要使用“'n' no of databases”。为了解决我的情况,我需要根据每个用户对其个人数据库的请求动态建立数据库连接,并需要执行 CRUD 操作( 注意 :并发操作需要在自己的数据库上执行而不打扰其他人)。

我的偏好:

所以,最初我做了一些研究并计划使用 Node + PostgreSQL + Sequelize

问题:

然后我开始研究如何在每个 api 请求期间在 sequelize 中动态建立连接,但我什么也没找到。因为在所有教程和 stackoverflow 问题和答案中,DB 连接都不是完全动态的,并且在应用程序初始化期间建立了 sequelize 连接,并且模型受 sequelize db 连接的限制(如果我的理解有误,请纠正我)。

解决方案:

我搜索了 Sequelize 的其他替代方案。然后,我在 postgresql native 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)
})

然后我发现查询是原始 SQL 而不是 ORM。

问题:
  • 它能够在每个 api 请求而不是应用程序初始化期间执行 sequelize 动态数据库连接吗?
  • 如果问题 1 不可能,使用 pg 驱动程序是否好?如果查询是原始 sql,我可以使用 Mysql 而不是 PostgreSQL 吗?
  • 如果问题 1 是可能的,那么迁移和播种怎么样( 注意: 迁移和播种也需要根据我的假设动态连接到数据库,如果新的迁移到达,则需要在 forloop 中建立与所有数据库的连接一,迁移和播种需要单独运行)?
  • 最佳答案

    我也有同样的问题。多个数据库在同一个MYSQL中,每个数据库有相同的模型定义。查了sequelize源码,发现一个sequelize实例可以解决多个DB连接的问题。

    连接配置:

    {
    "username": "root",
    "password": "123456",
    "database": "",
    "port": 3306,
    "dialect": "MySQL"
    }

    模型获取方式:
     static getModel(modelType, dbname) {
    let model = sequelize.models[module.name];
    model.tableName = {
    schema: dbname,
    tableName: modelType
    };
    sequelize.dialect.supports.schemas = true;
    return model;
    }

    这允许您跨多个数据库动态查询。

    关于mysql - Sequelize 中每个 api 调用期间的动态数据库连接,其中有 'n' 没有数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59783358/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com