Sequelize: «Модель не была определена», когда отношения между несколькими базами данных - PullRequest
1 голос
/ 06 февраля 2020

Я пытаюсь создать один сиквелиз для каждой базы данных. Некоторые таблицы в 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;
}

(Да, я использую 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
    });

Проблема: когда первый экземпляр (DB1) создан, sequelize не находит таблицу Content и выдает мне эту ошибку:

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)

Можно ли создавать экземпляры sequelize один за другим, хотя между базами данных существуют отношения?

Должен ли я добавлять модели после того, как все экземпляры секвелирования созданы?

Спасибо за вашу помощь, ребята

Похожие:

...