Query Builder 에서 soft delete, restore (삭제 해제) 를 지원한다
Delete using Query Builder - typeorm
Alternatively, You can recover the soft deleted rows by using the restore() method:
orkhan.gitbook.io
// delete 쿼리
await myDataSource
.createQueryBuilder('users')
.delete()
.from(User)
.where("id = :id", { id: 1 })
.execute()
//soft delte
await dataSource.getRepository(Entity).createQueryBuilder().softDelete()
await myDataSource
.createQueryBuilder('users')
.softDelete()
.where("id = :id", { id: 1 })
.execute();
//restore() method
await dataSource.getRepository(Entity).createQueryBuilder().restore()
await myDataSource
.createQueryBuilder('users')
.restore()
.where("id = :id", { id: 1 })
.execute();
TypeORM에서는 소프트 삭제(soft delete)를 지원
레코드를 완전히 삭제하는 대신 레코드를 표시로 표시하여 삭제된 것처럼 표시하는 메커니즘을 의미합니다. 이를 통해
데이터 보존 및 복구가 가능하며, 데이터의 손실을 방지할 수
TypeORM에서 소프트 삭제를 구현하는 방법
1. 엔터티 설정:
먼저, 소프트 삭제를 구현하려는 TypeORM 엔터티(Entity) 클래스에서 @Entity 데코레이터 옵션 중 하나인 softDelete 를 true로 설정합니다.
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
@Entity({ softDelete: true }) // 소프트 삭제 활성화
export class Item {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
}
Delete using Query Builder - typeorm
Alternatively, You can recover the soft deleted rows by using the restore() method:
orkhan.gitbook.io
2. 엔터티 메서드 설정:
TypeORM의 엔터티 클래스에는 소프트 삭제와 관련된 메서드를 사용할 수 있습니다. 주요 메서드로는 softRemove()와 restore()가 있습니다.
*softRemove(): 레코드를 소프트 삭제 상태로 표시합니다.
const itemToRemove = await itemRepository.findOne(id);
await itemRepository.softRemove(itemToRemove);
*restore(): 소프트 삭제된 레코드를 복원합니다.
const itemToRestore = await itemRepository.findOne(id, { withDeleted: true });
await itemRepository.restore(itemToRestore);
softRemove() 및 restore() 메서드를 사용하여 레코드를 소프트 삭제하고 복원할 수 있습니다.
3. 삭제된 항목 검색:
삭제된 항목을 검색하려면 withDeleted 옵션을 사용합니다.
const deletedItems = await itemRepository.find({ withDeleted: true });
이렇게 하면 소프트 삭제된 항목을 검색할 수 있습니다.
4. 설정 옵션 사용:
TypeORM의 Entity 데코레이터에서 softDelete 옵션을 구성하려면 다양한 소프트 삭제 설정을 적용할 수 있습니다. 예를 들어, column 옵션을 사용하여 소프트 삭제 상태를 나타내는 컬럼의 이름을 지정할 수 있습니다.
@Entity({ softDelete: true, softDeleteColumn: 'deletedAt' }) // deletedAt 컬럼을 사용
export class Item {
// ...
}
소프트 삭제를 구현하면 레코드를 완전히 삭제하지 않고 데이터 보존과 복구를 가능하게 할 수 있습니다. 이것은 데이터베이스에서 소프트 삭제가 필요한 상황에 유용합니다.
'Wecode -기업협업 인턴 (부트캠프) > 기업협업 독학, 공부' 카테고리의 다른 글
타입스크립트와 typeorm과 postgresql을 쓰는 sql 예시 ** (0) | 2023.11.01 |
---|---|
쿼리 빌더(Query Builder) : 데코레이터 @Getone(반환), TypeORM에서 사용하는 주요 데코레이터 (0) | 2023.11.01 |
git flow init 시 나오는 메세지 (0) | 2023.11.01 |
docker compose up으로 다운로드 한 postgresql은 postgresql 문법, 명령어가 같니 ** (0) | 2023.11.01 |
typescript에서 entities 가 뭐니/interface ** (0) | 2023.11.01 |