Sequelize:跨多个数据库的关系时“模型尚未定义”

Gae*_*Gac 9 javascript orm node.js sequelize.js sequelize-typescript

我正在尝试为每个数据库实例化一个续集。DB1 中的某些表与 DB2 中的表存在关系,反之亦然。其中一种关系是 DB1.Utilisateur.contenuProvenance_id => DB2.Contenu.id 和 DB2.Contenu.utilisateur_id => DB1.Utilisateur.id。

这是 Utilisateur 模型:

@Table
export default class Utilisateur extends Model<Utilisateur> {

    @API() @PrimaryKey @AutoIncrement @Column({ type: DataType.INTEGER })
    public id!: number;

    @Column({ type: DataType.STRING, allowNull: false })
    public email!: string;

    @Column({ type: DataType.STRING, allowNull: false })
    public nom!: string;

    @ForeignKey(() => Utilisateur)
    @Column({ type: DataType.INTEGER, allowNull: true })
    public parrain_id?: number;

    @ForeignKey(() => Contenu)
    @Column({ type: DataType.INTEGER, allowNull: true })
    public contenuProvenance_id?: number;
}
Run Code Online (Sandbox Code Playgroud)

(是的,我正在使用sequelize-typescript将我的模型声明为Typescript类)

以下是我的 Sequelize 实例的创建方式:

let DBs = {};
for (const ZONE of zones)
    DBs[ ZONE.name ] = new Sequelize(ZONE.serveur.bdd.nom, ZONE.serveur.bdd.login, ZONE.serveur.bdd.mdp, {
        host: ZONE.serveur.bdd.hote,
        dialect: "mariadb",
        ...
        models: ZONE.modeles // Array of models
    });
Run Code Online (Sandbox Code Playgroud)

问题:创建第一个实例(DB1)时,sequelize 找不到内容表并给出以下错误:

Error: Contenu has not been defined
    at Sequelize.model (project/node_modules/sequelize/lib/sequelize.js:443:13)
    at Sequelize.model (project/node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize.js:29:26)
    at project/node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize.js:51:46
    at Array.forEach (<anonymous>)
    at project/node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize.js:49:26
    at Array.forEach (<anonymous>)
    at Sequelize.associateModels (project/node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize.js:45:16)
    at Sequelize.addModels (project/node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize.js:37:14)
    at new Sequelize (project/node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize.js:19:22)
Run Code Online (Sandbox Code Playgroud)

尽管数据库之间存在关系,是否可以一一创建续集实例?

创建所有sequelize 实例后是否应该添加模型?

谢谢你们的帮助

有关的:

Kat*_*Kat -1

Sequalize 不支持多个迁移文件夹,也不区分您为各个模型设置的方法。你必须非常具体。从你提供的信息中我无法判断你是否是这样的人。

看看这个问题是否有帮助:Migrations in Sequelize in my ownfolder structure 您必须配置一种围绕默认路径的方法。

这也可能提供一些见解: https: //medium.com/unetiq/using-multiple-databases-with-nodejs-and-sequelize-59e0abcbbe6f

您可以在此处阅读 Sequalize 有关迁移的详细信息: https: //sequelize.org/master/manual/migrations.html#the-sequelizerc-file