반응형
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을 통해 타입 변경을 해준다.
이상입니다
*코드 깨지면 아래 링크 참조해주세요
'개발 > 개발의 ㄱ' 카테고리의 다른 글
[python] 버전 변경 (0) | 2024.04.03 |
---|---|
[NestJs] DTO 유효성 vs constructor 초기화 (when strict mode) (0) | 2023.07.27 |
[Redis] redis WRONGTYPE Operation against a key holding the wrong kind of value (0) | 2023.07.25 |
[Js] 값, 리터럴, 표현식, 문, 토큰이란 (0) | 2023.07.22 |
[NestJS] 사용할 메소드가 Promise인지? (0) | 2023.07.20 |