sequelize.js - Sequelize 范围内的 BelongsTo/HasMany 无法包含

标签 sequelize.js sequelize-typescript

对于我的项目,我最近不得不将一个模型分成 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/

相关文章:

node.js - 表示链接两个模型的关联表

node.js - Squeelize 无法访问外键

node.js - Sequelize (PostgresQL) 多对多聊天实现

node.js - Sequelize Association 获取像 JSON 这样的数据

postgresql - 使用UTC : false 时,Sequelize Date 列仍返回为UTC

Node.js 和sequelize-typescript - 数据访问对象和业务对象

node.js - 我应该让 Sequelize 模型和迁移保持同步吗?

sequelize.js - Sequelize - 未列出指定的相关对象时过滤父项

node.js - 基于条件的 Sequelize Node JS 中的条件

sequelize.js - Sequelize 获取列的总和 - TypeError : Cannot read property 'includes' of undefined