-
NestJS - numeric query parameterFramework/NestJS 2021. 11. 30. 21:52
개발을 하던 도중, query parameter 에 대한 validation 처리를 하려고 dto 파일을 만들고 있었는데
아래와 같은 오류가 발생했습니다.
// xxx.dto.ts import { IsNumber } from 'class-validator'; export class PaginationDto { @IsNumber() private readonly pageNo: number; @IsNumber() private readonly pageSize: number; getSkip(): number { return (this.pageNo - 1) * this.pageSize; } getTake(): number { return this.pageSize; } }
분명히 query parameter 에 number 를 썼는데 왜 에러가 발생하는지 궁금했습니다.
그리고 console.log 를 통해 query parameter 의 결과를 출력해봤는데... 문자열 타입으로 출력되는 것을 확인할 수 있었습니다.
그래서 열심히 찾아봤는데 해당 링크에 해결방법을 설명해준 글이 있었습니다.
바로 class-transformer 라이브러리를 사용하는 방법입니다. 만약 class-transformer 라이브러리가 설치되어있지 않다면 설치해줘야 합니다.
https://www.npmjs.com/package/class-transformer
간략히 설명하자면 해당 라이브러리가 제공하는 기능을 통해 형 변환을 가능하게 해줍니다.
따라서 아래와 같이 코드를 변환하여 문제를 해결했습니다.
import { IsNumber } from 'class-validator'; import { Type } from 'class-transformer'; // ************* export class PaginationDto { @IsNumber() @Type(() => Number) // ************* private readonly pageNo: number; @IsNumber() @Type(() => Number) // ************* private readonly pageSize: number; getSkip(): number { return (this.pageNo - 1) * this.pageSize; } getTake(): number { return this.pageSize; } }
'Framework > NestJS' 카테고리의 다른 글
NestJS - Interface Dependency Injection(DI) (0) 2022.08.25 NestJS - Query String 배열(Array)로 처리하기 (0) 2022.02.14 NestJS - 의존성 주입 (2) 2021.11.28 NestJS, TypeORM - Entity 상속(inheritance) (0) 2021.11.22 NestJS Circular Dependency(순환 종속성) 문제 (0) 2021.11.22