Typeorm 根据类型返回字段内容

问题描述 投票:0回答:1

我有以下 TypeORM 实体

@Entity()
export class SuperResource extends BaseEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @OneToOne(() => Resource, {cascade: true, eager: true})
  @JoinColumn()
  resource: Resource

  @Column({type: "enum", enum: ResourceTypes})
  type: string

  @Column()
  created_at: Date

  @Column()
  modified_at: Date
}

我还有几个实体

extends
Resource
实体,例如:

ETL

@Entity()
export class Job extends Resource {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  jobId: number;

  @Column()
  description: string;
}

桌子

@Entity()
export class Table extends Resource {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  description: string;

  @Column()
  database: string

  @Column({ type: 'enum', enum: Datasources, default: Datasources.Other})
  datasource: Datasources;
}

Resource
以下实体

@Entity()
export abstract class Resource extends BaseEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string

  @Column()
  regulatory: boolean
}

现在,当我执行查询时,例如,

repository.findOne({ where: {id: parseInt(id)}})

字段

resource
返回的对象属于
Resource
类型,这意味着我没有获得对象内部的完整信息。

¿有没有办法根据对象的Type返回

resource
字段内的信息?

可以通过执行2次查询来解决,但我不确定是否还有其他方法。

谢谢!

typescript express typeorm
1个回答
0
投票

TypeOrm 文档包含实体继承的示例。您可以使用 @TableInheritance 和 @ChildEntity 装饰器来解决您的问题。

是否对您有帮助请反馈,谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.