라이브러리, 프레임워크/Swagger

[Swagger + NestJS] PickType 이용 시 @ApiProperty 적용 안되는 문제

dv_jamie 2022. 7. 6. 11:57

문제

import { PickType } from '@nestjs/mapped-types';
import { ApiProperty } from '@nestjs/swagger';
import { IsNumber } from 'class-validator';
import { Alarm } from 'src/_entity/alarm.entity';

export class CreateAlarmDto extends PickType(Alarm, [
    'type',
    'image',
    'text',
    'link'
] as const) {
    @ApiProperty({ description: '유저 ID' })
    @IsNumber({}, { each: true })
    userIds: number[];
}

Dto를 만들면서 Alarm 엔티티를 상속하는 PickType을 사용했는데,
Swagger를 보니 Request body가 아래와 같이 나왔다.
(PickType으로 가져온 필드들이 보이지 않음, Entity에서 분명 @ApiProperty 모두 추가되어 있음)

 

해결

{ PickType } import 시 @nestjs/mapped-types 말고 @nestjs/swagger를 사용했더니 해결되었다.