개발/개발의 ㄱ
[NestJs] query, param type전환에 따른 DTO validation
도깨비!
2023. 7. 31. 16:59
반응형
get 요청시 query, param은 무조건 string으로 값이 온다.
NestJs에서 권장한 dto는 class-validator을 통해 유효성 검사가 가능한데, IsNumber이 먹히지 않는 이슈가 있다.
어떻게 할까?
1) enableImplicitConversion: true
// main.ts
...
app.useGlobalPipes(
new ValidationPipe({
transform: true,
transformOptions: { enableImplicitConversion: true },
})
);
...
transform true와 함께 enableImplicitConversion: true을 설정해, 암묵적 변환을 실행한다.
2) @Type(() => Number)
import {
IsNumber,
} from "class-validator";
import { Type } from "class-transformer";
export class DTO {
@Type(() => Number)
@IsNumber()
readonly index: number;
@Type(() => Number)
@IsNumber()
readonly index_: number;
@Type(() => Number)
@IsNumber()
readonly index__: number;
}
필자의 경우 상세 케이스 추적이 어렵기보단, 필요한 순간에만 사용하길 희망한다.
이에 class-transformer의 Type을 통해 타입 변경을 해준다.
이상입니다
*코드 깨지면 아래 링크 참조해주세요