Sequelize scoped BelongsTo / HasMany 无法包含
Sequelize scoped BelongsTo / HasMany not being able to include
对于我的项目,我最近不得不将一个模型拆分为 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},
],
});
我尝试了一些包含配置,但它们都抛出了一个错误,看起来我做错了。有人对我可能做错了什么有什么建议吗?
grts 格伦
找出问题的原因,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;
}
一切都解决了:)
对于我的项目,我最近不得不将一个模型拆分为 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},
],
});
我尝试了一些包含配置,但它们都抛出了一个错误,看起来我做错了。有人对我可能做错了什么有什么建议吗?
grts 格伦
找出问题的原因,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;
}
一切都解决了:)