- 订阅者和监听者装饰器
@AfterLoad@BeforeInsert@AfterInsert@BeforeUpdate@AfterUpdate@BeforeRemove@AfterRemove@EventSubscriber
订阅者和监听者装饰器
@AfterLoad
你可以在实体中定义具有任何名称的方法,并使用@AfterLoad标记,TypeORM 将在每次使用QueryBuilder或 repository/ manager 查找方法加载时调用它。例如:
@Entity()export class Post {@AfterLoad()updateCounters() {if (this.likesCount === undefined) this.likesCount = 0;}}
了解有关listeners的更多信息。
@BeforeInsert
你可以在实体中定义任何名称的方法,并使用@BeforeInsert标记,TypeORM 将在使用 repository/managersave插入实体之前调用它。例如:
@Entity()export class Post {@BeforeInsert()updateDates() {this.createdDate = new Date();}}
了解有关listeners的更多信息。
@AfterInsert
你可以在实体中定义任何名称的方法,并使用@AfterInsert标记,TypeORM 将在使用 repository/managersave插入实体后调用它。例如:
@Entity()export class Post {@AfterInsert()resetCounters() {this.counters = 0;}}
了解有关 listeners的更多信息。
@BeforeUpdate
你可以在实体中定义任何名称的方法,并使用@BeforeUpdate标记,TypeORM 将在使用 repository/managersave更新现有实体之前调用它。例如:
@Entity()export class Post {@BeforeUpdate()updateDates() {this.updatedDate = new Date();}}
了解有关 listeners的更多信息。
@AfterUpdate
你可以在实体中定义任何名称的方法,并使用@AfterUpdate标记,TypeORM 将在使用存储库/管理器save更新现有实体之后调用它。例如:
@Entity()export class Post {@AfterUpdate()updateCounters() {this.counter = 0;}}
了解有关 listeners 的更多信息
@BeforeRemove
你可以在实体中定义任何名称的方法,并使用@BeforeRemove标记,TypeORM 将在使用 repository/managerremove删除实体之前调用它。例如:
@Entity()export class Post {@BeforeRemove()updateStatus() {this.status = "removed";}}
了解有关 listeners的更多信息。
@AfterRemove
你可以在实体中定义一个任何名称的方法,并使用@AfterRemove标记它,TypeORM 将在使用 repository/managerremove删除实体之后调用它。例如:
@Entity()export class Post {@AfterRemove()updateStatus() {this.status = "removed";}}
了解有关 listeners的更多信息。
@EventSubscriber
将类标记为可以侦听特定实体事件或任何实体事件的事件订阅者。使用QueryBuilder和 repository/manager 方法触发事件。例如:
@EventSubscriber()export class PostSubscriber implements EntitySubscriberInterface<Post> {/*** 表示此订阅者仅侦听Post事件。*/listenTo() {return Post;}/*** 在POST INSERTED之前调用。*/beforeInsert(event: InsertEvent<Post>) {console.log(`BEFORE POST INSERTED: `, event.entity);}}
你可以从EntitySubscriberInterface实现任何方法。要监听任何实体,只需省略listenTo方法并使用any:
@EventSubscriber()export class PostSubscriber implements EntitySubscriberInterface {/*** 在ENTITY INSERTED之前*/beforeInsert(event: InsertEvent<any>) {console.log(`BEFORE ENTITY INSERTED: `, event.entity);}}
了解有关 subscribers的详细信息
