乐闻世界logo
搜索文章和话题

TypeORM 中如何使用生命周期钩子?

2月17日 22:48

TypeORM 中使用订阅者(Subscriber)和监听器(Listener)实现生命周期钩子:

  1. 实体监听器: 在实体类中使用装饰器定义监听器:

    typescript
    @Entity() export class User { @BeforeInsert() beforeInsert() { this.createdAt = new Date(); } @BeforeUpdate() beforeUpdate() { this.updatedAt = new Date(); } @AfterLoad() afterLoad() { // 加载后执行 } }
  2. 订阅者: 独立的类,可以监听多个实体的生命周期事件:

    typescript
    @EventSubscriber() export class UserSubscriber implements EntitySubscriberInterface<User> { listenTo() { return User; } beforeInsert(event: InsertEvent<User>) { console.log('Before insert:', event.entity); } }
  3. 可用的事件

    • BeforeInsert / AfterInsert
    • BeforeUpdate / AfterUpdate
    • BeforeRemove / AfterRemove
    • BeforeSoftRemove / AfterSoftRemove
    • BeforeRecover / AfterRecover
    • AfterLoad
  4. 注册订阅者: 在 DataSource 配置中添加 subscribers 选项。

生命周期钩子适用于数据验证、自动填充字段、日志记录等场景。

标签:TypeORM