【发布时间】:2021-03-15 11:38:03
【问题描述】:
sequelize中如何定义单个模型并关联多个数据库?
目前在节点上有一个工作应用程序,使用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
我不认为创建上述模型的精确副本以将其与沙箱相关联是正确的方法,因为它会产生更多的复杂性。
主要思想是添加到主数据库中的任何内容,我们在沙盒数据库中也有它的精确副本。
【问题讨论】:
标签: mysql node.js sequelize.js