728x90
반응형

 

전 글에서 movieData DTO를 만들어봤다.

이번 글에선 updateData DTO를 만들어보겠다.

 

먼저 update-movie.dto.ts 파일을 만든다.

 

update-movie.dto.ts

import {IsString, IsNumber} from 'class-validator'

export class CreateMovieDto {
    @IsString()
    readonly title?: string;

    @IsNumber()
    readonly year?: number;
    
    @IsString({each:true})
    readonly genres?: string[];
}

 

movieData의 DTO와 다른 점은 물음표가 있다는 점인데, 이는 필수사항은 아니게 한다는 뜻이다.

 

그다음 Controller와 Service에 추가하는 방법까지는 똑같다.

여기서 우리는 부분 객체라는 것을 써볼 것이다. 먼저 아래와 같이 설치해준다.

$npm i @nextjs/mapped-types

 

 

그다음 PartialType을 사용하기 위해 코드를 바꿔준다.

import {IsString, IsNumber} from 'class-validator'
import { PartialType } from '@nestjs/mapped-types';
import { CreateMovieDto } from './create-movie.dto';

export class UpdateMovieDto extends PartialType(CreateMovieDto) {}

 

 

이런식으로 CreateMovieDto를 상속할 수 있게 만들 수 있다. 또한 각각의 요소가 필수사항이 아니게끔 만들어준다.

 

이렇게 하고 POST 메소드로 Create하고 PATCH로 업데이트를 실행해보면 성공!

728x90
반응형

+ Recent posts