Server/NodeJS & NestJS

NestJS) Array<object> each validate DTO

Juzdalua 2022. 7. 13. 15:56

POST method로 body를 받을 때, Array에 Object 데이터를 전송할 수 있다.

DTO를 Object의 데이터로 구성하고 각 배열마다 유효성 검사를 하고 싶었다.

 

 

Object별 DTO를 작성한다.

import { IsInt, IsOptional, IsString, IsUrl } from "class-validator";

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

  @IsString()
  readonly description: string;

  @IsUrl()
  readonly imageUrl: string;

  @IsOptional()
  @IsUrl()
  readonly videoUrl: string;

  @IsInt()
  readonly priority: number;
}

 

컨트롤러에서 바디 데코레이터에 파이프를 달아준다.

@Post("/modify")
async updatePost(@Body(new ParseArrayPipe({items: ModifyDTO})) body:ModifyDTO[] ){
  console.log(body);
  return ;
}

파이프를 통해 각 배열마다 정상적으로 유효성 검사가 실행된다.