使用 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 方法并传递实体时,实体才会被传递给订阅者。
我正在使用此方法删除自定义存储库中的对象:
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 方法并传递实体时,实体才会被传递给订阅者。