0. 문제 상황 - 무한참조 문제 발생 문제 상황 설명에 앞서 도메인 설명을 간략하게 하겠습니다. 저는 출석부 서비스 "체쿠리"를 개발 중입니다.회원은 N 개의 출석부를 가질 수 있습니다.출석부는 N 명의 회원을 가질 수 있습니다.출석부를 여러 명의 선생님이 함께 관리하는 시스템인거죠. 그리고 출석부는 사용 가능 요일( AttendanceDays )이 있습니다.1개의 출석부는 [월, 화, 수, 목, 금 ] 등 1..N 개의 AttendanceDays 가 있습니다. 문제는 여기서 발생합니다. 회원이 가진 출석부를 조회하는 API를 통해서AttendanceBook, AttendanceDays 를 함께 호출했더니 아래와 같은 결과가 발생했습니다. AttendanceBook, AttendanceDays 가 서로..
Nest.js를 처음 공부해 보는 사람은 Entity와 DTO의 차이가 생소할 수 있다. 오늘은 DTO와 Entity의 차이점을 예시와 함께 알아보자 🎯 Entity와 DTO의 코드 먼저 아래의 Exercise Entity와 Exercise DTO 코드를 함께 살펴보자 // Exercise Entity Code @Entity() @Unique(['name']) export class Exercise extends BaseEntity { @PrimaryGeneratedColumn('increment') id:number @Column() name:string; // Entity에서는 string 타입으로 정의 했다 !! // 이 부분을 유의해서 보자 ! @Column() tool:string; @Colu..
🎯 문제상황 CreateDto를 Update에도 사용하려고 하니 필요하지 않은 속성도 반드시 입력해줘야 하는 문제가 발생했다. 그래서 UpdateDto를 만들었다. UpdateDto의 경우 속성은 CreateDto와 같고 일부분만 있으면 되므로 CreateDto의 성분에서 @IsNotEmpty() 데코레이터만 제거해 주었다. ( 모든 내용은 같고 @IsNotEmpty() 만 제거한 상태이다 ! ) 결과는 대.실.패. UpdateDto를 만들어 줬음에도 다른 속성 값을 입력하지 않았다는 문제가 발생했다. 새로운 방법이 필요함을 알게 됐다. 🎯 문제해결 UpdateDto의 경우 CreateDto와 속성은 같으나 일부 속성만을 가진다. Nest.js 에서는 이 부분을 쉽게 구현하기 위해 "PartialTyp..