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

TypeORM 中如何实现软删除?

2月17日 22:43

TypeORM 的软删除(Soft Delete)功能允许标记记录为已删除而不是物理删除:

  1. 启用软删除: 在实体中使用 @DeleteDateColumn() 装饰器:

    typescript
    @Entity() export class User { @DeleteDateColumn() deletedAt?: Date; }
  2. 软删除操作

    typescript
    await userRepository.softRemove(user); // 或使用 await userRepository.softDelete(userId);
  3. 恢复软删除的记录

    typescript
    await userRepository.restore(userId);
  4. 查询时排除软删除的记录: 默认情况下,find() 方法会自动排除已软删除的记录。

  5. 包含软删除的记录

    typescript
    userRepository.find({ withDeleted: true });
  6. 只查询软删除的记录

    typescript
    userRepository.find({ withDeleted: true, where: { deletedAt: Not(IsNull()) } });

软删除的优势是可以保留数据历史,便于数据恢复和审计。

标签:TypeORM