首页 > 解决方案 > TypeORM 单表继承在@Entity() 和@ChildEntity() 之间使用抽象类

问题描述

我想用 TypeORM 实现以下单表继承:

@Entity()
@TableInheritance({column: {type: "varchar", name: "type"}})
export class BaseDevice {

  @PrimaryGeneratedColumn({type: "uuid"})
  id: string;

  // other fields
}

abstract class MeasureableDevice extends BaseDevice {

  @Column()
  value: string;

  // other fields
}

@ChildEntity()
export class TemperatureSensor extends MeasureableDevice {

  @Column()
  position: string;

  // other fields
}

但是当我运行我的应用程序时,我收到以下错误:

(node:2574710) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'build' of undefined at /node_modules/typeorm/metadata-builder/EntityMetadataBuilder.js:526:83 at Array.forEach () at EntityMetadataBuilder.computeEntityMetadataStep2 (/node_modules/typeorm/ metadata-builder/EntityMetadataBuilder.js:526:37) at /node_modules/typeorm/metadata-builder/EntityMetadataBuilder.js:81:74 at Array.forEach () at EntityMetadataBuilder.build (/node_modules/typeorm/metadata-builder/EntityMetadataBuilder .js:81:25) 在 ConnectionMetadataBuilder.buildEntityMetadatas (/node_modules/typeorm/connection/ConnectionMetadataBuilder.js:57:141) 在 Connection.buildMetadatas (/node_modules/typeorm/connection/Connection.js:514:57) 在 Connection. (/node_modules/typeorm/connection/Connection.js:127:30) 在步骤 (/node_modules/tslib/tslib.js:141:27) (使用node --trace-warnings ...显示警告的创建位置)(节点:2574710)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志--unhandled-rejections=strict(请参阅 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝 id:1)(节点:2574710)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。

@Entity()当我删除 of和类之间的抽象类并将字段直接@ChildEntity()复制到一切正常时。因此,这些带注释的类之间的抽象类似乎存在问题。有谁知道如何解决这个问题?@Column()abstract class MeasureableDeviceclass TemperatureSensor

标签: node.jstypeorm

解决方案


推荐阅读