오늘은 기본 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 |