【问题标题】:Sequelize: Adding a backup database or multi databasesSequelize:添加备份数据库或多数据库
【发布时间】: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


    【解决方案1】:

    我想您应该使用Sequelize.define 定义模型并从模型模块返回模型注册函数。

    请参阅my answer,了解如何注册所有模型和关联。这样,您可以为每个连接注册模型并将其存储到一个单独的对象中,该对象包含连接本身及其所有模型。

    【讨论】:

      猜你喜欢
      • 2011-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-01
      • 2021-12-08
      • 2020-09-04
      • 2015-04-21
      • 1970-01-01
      相关资源
      最近更新 更多