gpt4 book ai didi

mysql - Sequelize : Adding a backup database or multi databases

转载 作者:行者123 更新时间:2023-12-03 22:32:56 30 4
gpt4 key购买 nike

sequelize 中如何定义单个模型并关联多个数据库?
目前在 Node 上有一个工作应用程序,使用 sequelize,连接到 mysql db,初始化如下

import { Sequelize } from 'sequelize'

const sequelize = new Sequelize(
process.env.MYSQL_DB,
process.env.MYSQL_USER,
process.env.MYSQL_PASSWORD,
{
pool: {
max: 30,
min: 3,
acquire: 60000, // throw error after 60s can not open connection
idle: 10000 // release after 10s
},
dialect: 'mysql',
host: process.env.MYSQL_HOST,
port: process.env.MYSQL_PORT,
logging: false
}
)

export default sequelize
我现在需要添加另一个数据库,它将是现有数据库的精确副本,称之为 sandbox
我知道 sequelize 可以连接多个数据库,这是我所需要的,并且我能够成功地做到这一点。
问题是关于已经定义的模型,以及这些模型如何与两个数据库相关联。
目前这些模型是这样定义的
import Sequelize, { Model } from 'sequelize'
import { sequelize } from '../configs'

class Job extends Model {
slug: string
httpData: string
}

Job.init(
{
id: {
type: Sequelize.BIGINT({ length: 20, unsigned: true }),
primaryKey: true,
autoIncrement: true
},
name: { type: Sequelize.TEXT },
slug: { type: Sequelize.CHAR(255) },
group: { type: Sequelize.CHAR(16) },
status: { type: Sequelize.CHAR(8) },
httpStatus: { type: Sequelize.CHAR(3) },
httpData: { type: Sequelize.TEXT({ length: 'long' }) },
completed_at: { type: Sequelize.DATE }
},
{
sequelize,
tableName: 'stats_jobs',
createdAt: 'created_at',
updatedAt: 'updated_at'
}
)

export default Job
我不觉得创建上述模型的精确副本以将其与沙箱相关联是正确的方法,因为它会产生更多的复杂性。
主要思想是在主数据库中添加任何内容,我们在沙盒数据库中也有它的精确副本。

最佳答案

我想您应该使用 Sequelize.define 定义模型并从模型模块返回模型注册函数。
my answer关于如何注册所有模型和协会。这样,您可以将每个连接的模型注册并存储到一个单独的对象中,该对象包含一个连接本身及其所有模型。

关于mysql - Sequelize : Adding a backup database or multi databases,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65126250/

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