반응형
- NestJS로도 DTO Validation 체크가 가능하다
- CreateDTO와 필드는 같지만, CreateDTO와 달리 모든 필드가 필수요소가 아닌 경우 PartialType으로 부분타입구현이 가능하다.
- ex) UpdateDTO
Pipe
- 유효성 검사용 파이프
- 미들웨어
- install
- npm install class-validator class-transformer
2. main.ts > app.useGlobalPipes(new ValidationPipe());
import { ValidationPipe } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(new ValidationPipe(
{
whitelist : true,
forbidNonWhitelisted : true,
transform : true
}
));
await app.listen(3000);
}
bootstrap();
3. DTO > @IsString() , @IsNumber(), @IsString({ each:true })
- each옵션을 준 이유 => String[]이기 때문
import { IsNumber, IsString } from "class-validator";
export class CreateMovieDto{
@IsString()
readonly title: string;
@IsNumber()
readonly year: number;
@IsString({each:true})
readonly genres: string[];
ValidationPipe
옵션
- WhiteList - true로 설정하면 아무 데코레이터도 없는 어떠한 property의 object를 거릅니다.
- 데코레이터에 해당되지 않는 데이터는 Validator에 도달하지 않는다.
2. forbidNonWhiteListed - true를 하면 리퀘스트 자체를 막음
- Id가 String인 이유는, URL로 보낸 데이터는 전부 String이기 때문
- 근데 Entity는 number니까.. 번환이슈가 생김
- 그럴때 필요한게 transform 옵션
3. rnasform - true를 하면 유저들이 보낸 데이터를 실제 타입으로 변환함
반응형
부분타입
- install
- npm install @nestjs/mapped-types (타입을 변환시키고 사용할 수 있게하는 패키지)
- UpdateMovieDto > extends PartialType()
- 부분타입은 베이스타입이 필요하므로 extends PartialType(CreateMovieDto)
import { PartialType } from "@nestjs/mapped-types";
import { CreateMovieDto } from "./create-movie.dto";
export class UpdateMovieDto extends PartialType(CreateMovieDto){}
반응형
'재학습 > NestJS' 카테고리의 다른 글
[NestJS] Swagger 적용( 과 Swagger -> Redoc으로 변경..은 하려고하였으나~~ ) (0) | 2023.01.08 |
---|---|
[NestJS] Swagger vs Redoc (0) | 2023.01.08 |
[NestJS] Dependency Injection & Generate Module (0) | 2022.12.14 |
[NestJS] 기본파일체크와 Generate의 신기함(?) (0) | 2022.12.11 |
[NestJS] NestJS 프레임워크, 설치와 실행 (0) | 2022.12.09 |