对于我的项目,我最近不得不将一个模型分成 2 个不同的模型。但是一个主要模型总是引用一个或另一个,所以我做了以下事情:
// model1.model.ts
export class Model1 extends Model {
@BelongsTo(() => Model2, {
foreignKey: 'linkId',
constraints: false,
scope: {
linkType: 'model2'
}
})
models2: Model2;
@BelongsTo(() => Model3, {
foreignKey: 'linkId',
constraints: false,
scope: {
linkType: 'model3'
}
})
models3: Model3;
@Column
linkId: string;
@Column
linkType: string;
}
// model2.model.ts
export class Model2 extends Model {
@HasMany(() => Model1, {
foreignKey: 'linkId',
constraints: false,
scope: {
linkType: 'model2'
}
})
models1: Model1 [];
}
// model3.model.ts
export class Model3 extends Model {
@HasMany(() => Model1, {
foreignKey: 'linkId',
constraints: false,
scope: {
linkType: 'model3'
}
})
models1: Model1 [];
}
这对于我连接到数据的 graphql 端来说似乎很有用,但现在我正在尝试从后端代码中的其他部分访问数据。然而,这给了我以下错误:SequelizeDatabaseError: column model2.linkType does not exist
我正在使用的代码如下:const testing = await Model1.findAll({
where,
attributes: [
// some attributes
],
include: [
{model: Model2},
{model: Model3},
],
});
我尝试了一些包含配置,但它们都抛出了一个错误,看起来我做错了。有人对我可能做错了什么有任何建议吗?格伦
最佳答案
找出这给我带来问题的原因,Model1
不需要引用范围
// model1.model.ts
export class Model1 extends Model {
@BelongsTo(() => Model2, {
foreignKey: 'linkId',
constraints: false,
})
models2: Model2;
@BelongsTo(() => Model3, {
foreignKey: 'linkId',
constraints: false,
})
models3: Model3;
@Column
linkId: string;
@Column
linkType: string;
}
一切都解决了:)
关于sequelize.js - Sequelize 范围内的 BelongsTo/HasMany 无法包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66679462/