부트캠프

class - transfomer 사용법 ( NestJS )

ohs020105 2025. 2. 13. 14:54

오늘은 기본 crud는 작성을 완료했지만 파일 구성중에 service, controller 이렇게만 나뉘어져 있었지만 사실은 repository 도 있어야 했다는 점을 알게 되어서... 급하게 추가하고 수정했다. 그 과정중에서 생긴 문제를 얘기해보겠다 

 

처음에 repository를 생성할땐 문제가 없었다 예전에 하던 프로젝트에서 보면서 참고했기 때문 하지만 문제는 

 

새로운 라이브러리를 설치를 해줬어야 했던 건데 

그 라이브러리는 

 

   npm install class-transformer

바로 이 친구다 .

이게 뭐하는 거냐면 

 

- 객체를 다른 객체로 변환하거나, 객체를 직렬화/ 역직렬화하는 데 유용한 라이브러리 이다. 

특히, DTO 와 엔티티 간의 변환을 쉽게 할 수 있어 코드의 가독성과 유지보수성을 높이는 데 도움이 된다.

 

장점으로는 

 

1. 자동 변환 : DTO와 엔티티 간의 변환을 자동으로 처리할 수 있다.

 

2. 데코레이터 기반 : 데코레이터를 사용하여 변환 규칙을 정의할 수 있다.

 

3. 직렬화/역직렬화: 객체를 json으로 변환하거나, json을 객체로 변환할 수 있다.

 

 

사용법

1. 설치

먼저, 라이브러리를 설치 해준다.

   npm install class-transformer

 

2. 레포지토리 메서드에서 변환

레포지토리 메서드 내에서 plainToClass를 사용하여 DTO를 엔티티로 변환할 수 있다.

   import { plainToClass } from 'class-transformer';
   import { StoreItem } from './entities/store-item.entity';
   import { CreateStoreItemDto } from './dto/create-store-item.dto';

   export class StoreItemRepository {
     // ... existing code ...

     async addShopItem(createStoreItemDto: CreateStoreItemDto): Promise<StoreItem> {
       const storeItem = plainToClass(StoreItem, createStoreItemDto);
       return this.storeItemRepository.save(storeItem);
     }

     // ... existing code ...
   }

 

설명

- plainToClass : DTO 객체를 StoreItem 엔티티로 변환한다.

- 레포지토리 메서드 : 변환된 엔티티를 데이터베이스에 저장한다.

 

'부트캠프' 카테고리의 다른 글

71일차 TIL  (0) 2025.02.14
70일차 TIL (면접카타 4일차)  (0) 2025.02.13
69일차 TIL ( 면접 카타 3일차 )  (0) 2025.02.12
NEST.js 에 대한 정리  (0) 2025.02.11
68일차 TIL (면접카타 2일차)  (0) 2025.02.11