使用typeorm在nestjs中创建触发器?

问题描述 投票:0回答:1

如何在注册实体中添加触发器,每次插入该课程的注册时,该触发器都会将相应课程的总注册计数更新为 1? 这是我的 EnrollmentEntity:

export class EnrollmentEntity extends CustomBaseEntity {
  
  @ManyToOne(() => CourseEntity, (courseEntity) => courseEntity.enrollments, {
    nullable: false,
  })
  @JoinColumn({ name: 'course_id' })
  course: CourseEntity;

  }

这是我的课程实体:

export class CourseEntity extends CustomBaseEntity {
  
  @Column({
    name: 'total_enrollments',
    type: 'bigint',
    nullable: false,
    default: 0,
  })
  totalEnrollments: number;

  @OneToMany(
    () => EnrollmentEntity,
    (enrollmentEntity) => enrollmentEntity.course,
  )
  enrollments: EnrollmentEntity[];
}
sql-server triggers nestjs typeorm
1个回答
0
投票
export class EnrollmentEntity extends CustomBaseEntity {
      
      @ManyToOne(() => CourseEntity, (courseEntity) => courseEntity.enrollments, {
        nullable: false,
      })
      @JoinColumn({ name: 'course_id' })
      course: CourseEntity;
    
      @AfterInsert()
      async updateCourse() {
        let id = this?.course;
        const course = await CourseEntity.findOne({
            where: {
                id: String(id),
                ...isActive
            }
        });
        if (course) {
          course.totalEnrollments = Number(course?.totalEnrollments) + 1;
          await CourseEntity.save(course);
        }
      }
    }
© www.soinside.com 2019 - 2024. All rights reserved.