Typeorm BeforeInsert无效

2,117 阅读1分钟

情况

直接Save,并不会触发BeforeInsert

async create(attributes: DeepPartial<T>) {
    return this.repository.save(attributes); // 不会触发BeforeInsert
}

解决方法

1.利用plainToClass

async create(attributes: DeepPartial<T>) {
    const entity = plainToClass(User, attributes);
    return this.repository.save(entity);
}
  1. 利用new Entiry()
async create(attributes: DeepPartial<T>) {
    const entity = Object.assign(new User(), attributes);
    return this.repository.save(entity);
}

注意

BeforeInsert的触发条件为1.数据插入前, 2.数据库中无该数据. 如果要数据插入/更新时都触发, 那就再加上BeforeUpdate

  @BeforeInsert()
  @BeforeUpdate()
 beforeInsert() {
   console.log(this.department);
   this.department = this.leader_in_dept.map(value => value.dept_id) || [];
   console.log(this.department);
 }