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;
}

一切都解决了:)