TypeORM @AfterLoad() 应用
@AfterLoad() 是一个 TypeORM(TypeScript ORM)注解,用于在从数据库中加载实体之后自动执行方法。通过在实体类的方法上添加 @AfterLoad() 注解,可以在从数据库中加载实体之后自动调用该方法。
下面是一个使用 @AfterLoad() 进行身份证号脱敏的例子:
import { Entity, Column, PrimaryGeneratedColumn, AfterLoad } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
idCardNumber: string;
@AfterLoad()
maskIdCardNumber() {
if (this.idCardNumber) {
const length = this.idCardNumber.length;
if (length > 8) {
const masked = this.idCardNumber.substring(0, length - 8)
+ '********'
+ this.idCardNumber.substring(length - 4);
this.idCardNumber = masked;
}
}
}
}
output
idCardNumber: '4225791994********3225',
在上面的例子中,User 实体类有一个 idCardNumber 属性,表示用户的身份证号。在 maskIdCardNumber() 方法中,我们使用 substring() 方法将身份证号的前面几位和后面几位保留,中间用 8 个星号代替,从而实现身份证号脱敏的效果。
当 TypeORM 从数据库中加载 User 实体时,会自动调用 maskIdCardNumber() 方法,将身份证号脱敏后的值保存到 idCardNumber 属性中。这样,我们就可以在代码中使用脱敏后的身份证号,而无需手动处理。