• 监听器
    • @AfterLoad
    • @BeforeInsert
    • @AfterInsert
    • @BeforeUpdate
    • @AfterUpdate
    • @BeforeRemove
    • @AfterRemove

    监听器

    任何实体都可以使用具有侦听特定实体事件的自定义逻辑的方法。你必须使用特殊装饰器标记这些方法,具体取决于要侦听的事件。

    @AfterLoad

    你可以在实体中定义具有任何名称的方法,并使用@AfterLoad标记它,TypeORM 将在每次实体时调用它使用QueryBuilder或 repository/manager 查找方法加载。例如:

    1. @Entity()
    2. export class Post {
    3. @AfterLoad()
    4. updateCounters() {
    5. if (this.likesCount === undefined) this.likesCount = 0;
    6. }
    7. }

    @BeforeInsert

    你可以在实体中定义具有任何名称的方法,并使用@BeforeInsert标记它,并且 TypeORM 将在使用 repository/manager save插入实体之前调用它。例如:

    1. @Entity()
    2. export class Post {
    3. @BeforeInsert()
    4. updateDates() {
    5. this.createdDate = new Date();
    6. }
    7. }

    @AfterInsert

    你可以在实体中定义具有任何名称的方法,并使用@AfterInsert标记它,并且在使用 repository/manager save插入实体后,TypeORM 将调用它。

    1. @Entity()
    2. export class Post {
    3. @AfterInsert()
    4. resetCounters() {
    5. this.counters = 0;
    6. }
    7. }

    @BeforeUpdate

    你可以在实体中定义具有任何名称的方法,并使用@BeforeUpdate标记它,并且 TypeORM 将在使用 repository/manager save更新现有实体之前调用它。 但请记住,只有在模型中更改信息时才会出现这种情况。 如果运行save而不修改模型中的任何内容,@BeforeUpdate@AfterUpdate将不会运行。例如:

    1. @Entity()
    2. export class Post {
    3. @BeforeUpdate()
    4. updateDates() {
    5. this.updatedDate = new Date();
    6. }
    7. }

    @AfterUpdate

    你可以在实体中定义具有任何名称的方法,并使用@AfterUpdate标记它,并且在使用 repository/manager save更新现有实体后,TypeORM 将调用它。例如:

    1. @Entity()
    2. export class Post {
    3. @AfterUpdate()
    4. updateCounters() {
    5. this.counter = 0;
    6. }
    7. }

    @BeforeRemove

    你可以在实体中定义具有任何名称的方法,并使用@BeforeRemove标记它,并且 TypeORM 将在使用 repository/manager remove删除实体之前调用它。例如:

    1. @Entity()
    2. export class Post {
    3. @BeforeRemove()
    4. updateStatus() {
    5. this.status = "removed";
    6. }
    7. }

    @AfterRemove

    你可以在实体中定义一个具有任何名称的方法,并使用@ AfterRemove标记它,TypeORM 将在使用 repository/manager remove删除实体后调用它。例如:

    1. @Entity()
    2. export class Post {
    3. @AfterRemove()
    4. updateStatus() {
    5. this.status = "removed";
    6. }
    7. }