【发布时间】:2020-05-22 05:03:46
【问题描述】:
我正在尝试为每个数据库实例化一个续集。 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实例?
我应该在创建所有 sequelize 实例后添加模型吗?
感谢你们的帮助
相关:
【问题讨论】:
-
您好,我也遇到了同样的问题,您解决了吗?
-
嗨,因为 Sequelize 在很多方面都不能满足我的需求,所以我最终写了自己的 orm。
标签: javascript node.js orm sequelize.js sequelize-typescript