使用 queryBuilder 删除时,订户中未定义 TypeOrm event.entity

TypeOrm event.entity is undefined in subscriber when deleting using queryBuilder

我正在使用此方法删除自定义存储库中的对象:

removeById(id: number): Observable<DeleteResult> {
    return Observable.fromPromise(
      this.createQueryBuilder()
        .delete()
        .from(InspectionResult)
        .where('id = :inspectionResultId', { inspectionResultId: id })
        .execute()
    );
  }

我的订阅者是这样的:

@EventSubscriber()
export class InspectionResultSubscriber implements EntitySubscriberInterface<InspectionResult> {

  listenTo() {
    return InspectionResult;
  }

  afterRemove(event: RemoveEvent<InspectionResult>) {
    console.log(event.entity);
  }
}

afterRemove 被触发,但我在 event.entity 中得到未定义。 event 对象根本不包含有关已删除实体的信息。

请查看 #2246 中的类似讨论。在这种情况下,当您调用 delete 时,您没有任何实体可以将您发送给订阅者。查询生成器只是执行你 DELETE * FROM table WHERE x。要修复此行为,ORM 需要执行 SELECT * FROM table WHERE x。这当然效率不高 =) 只有当您调用 manager/repository 的 .remove 方法并传递实体时,实体才会被传递给订阅者。