实体监听器和订阅者
监听器
任何实体都可以使用具有侦听特定实体事件的自定义逻辑的方法。 你必须使用特殊装饰器标记这些方法,具体取决于要侦听的事件。
@AfterLoad
@AfterLoad
你可以在实体中定义具有任何名称的方法,并使用@AfterLoad
标记它,TypeORM 将在每次实体时调用它 使用QueryBuilder
或 repository/manager 查找方法加载。 例如:
@BeforeInsert
@BeforeInsert
你可以在实体中定义具有任何名称的方法,并使用@BeforeInsert
标记它,并且 TypeORM 将在使用 repository/manager save
插入实体之前调用它。 例如:
@AfterInsert
@AfterInsert
你可以在实体中定义具有任何名称的方法,并使用@AfterInsert
标记它,并且在使用 repository/manager save
插入实体后,TypeORM 将调用它。
@BeforeUpdate
@BeforeUpdate
你可以在实体中定义具有任何名称的方法,并使用@BeforeUpdate
标记它,并且 TypeORM 将在使用 repository/manager save
更新现有实体之前调用它。 但请记住,只有在模型中更改信息时才会出现这种情况。 如果运行save
而不修改模型中的任何内容,@BeforeUpdate
和@AfterUpdate
将不会运行。 例如:
@AfterUpdate
@AfterUpdate
你可以在实体中定义具有任何名称的方法,并使用@AfterUpdate
标记它,并且在使用 repository/manager save
更新现有实体后,TypeORM 将调用它。 例如:
@BeforeRemove
@BeforeRemove
你可以在实体中定义具有任何名称的方法,并使用@BeforeRemove
标记它,并且 TypeORM 将在使用 repository/manager remove
删除实体之前调用它。 例如:
@AfterRemove
@AfterRemove
你可以在实体中定义一个具有任何名称的方法,并使用@AfterRemove
标记它,TypeORM 将在使用 repository/manager remove
删除实体后调用它。 例如:
@BeforeSoftRemove
@BeforeSoftRemove
你可以在实体中定义具有任何名称的方法,并使用@BeforeSoftRemove
标记它,并且 TypeORM 将在使用 repository/manager softRemove
删除实体之前调用它。 例如:
@AfterSoftRemove
@AfterSoftRemove
你可以在实体中定义一个具有任何名称的方法,并使用@AfterSoftRemove
标记它,TypeORM 将在使用 repository/manager softRemove
删除实体后调用它。 例如:
@BeforeRecover
@BeforeRecover
你可以在实体中定义具有任何名称的方法,并使用@BeforeRecover
标记它,并且 TypeORM 将在使用 repository/manager recover
删除实体之前调用它。 例如:
@AfterRecover
@AfterRecover
你可以在实体中定义一个具有任何名称的方法,并使用@AfterRecover
标记它,TypeORM 将在使用 repository/manager recover
删除实体后调用它。 例如:
订阅者
将类标记为可以侦听特定实体事件或任何实体事件的事件订阅者。 使用QueryBuilder
和存储库/管理器方法触发事件。 例如:
你可以从EntitySubscriberInterface
实现任何方法。 要监听任何实体,你只需省略listenTo
方法并使用any
:
Last updated