Nestjs IsEnum dto 验证和招摇

Aur*_* N. 2 nestjs nestjs-swagger

这工作正常:

    import { IsIn } from 'class-validator';
    import { ApiProperty } from '@nestjs/swagger';

    export class createEventDto {
      @IsIn([0, 1, 2, 3, 4, 5])
      @ApiProperty({
        description: 'description of the severity property',
      })
      severity: number;
    }
Run Code Online (Sandbox Code Playgroud)

并且看起来像这样: 招摇数

我试图了解如何将严重性类型更改为枚举,我尝试了什么:

export enum Severity {
  Critical = 1,
  Major = 2,
  Minor = 3,
  Warning = 2,
  Info = 1,
  Clear = 0,
}
Run Code Online (Sandbox Code Playgroud)
    import { IsEnum } from 'class-validator';
    import { ApiProperty } from '@nestjs/swagger';
    import { Severity} from '../enums/severities';

    export class createEventDto {
      @IsEnum(Severity)
      @ApiProperty({
        description: 'description of the severity property',
      })
      severity: Severity;
    }
Run Code Online (Sandbox Code Playgroud)

虽然它正在工作,但 swagger 看起来有点不对劲(示例不正确,模式中严重性的描述嵌套在括号中: 招摇枚举

Cha*_*ran 5

如果要在 SwaggerUI 上表达枚举,则需要enumApiProperty装饰器提供属性

 import { IsEnum } from 'class-validator';
 import { ApiProperty } from '@nestjs/swagger';
 import { Severity} from '../enums/severities';

 export class createEventDto {
   @IsEnum(Severity)
   @ApiProperty({
     description: 'description of the severity property',
     enum: Severity
   })
   severity: Severity;
 }
Run Code Online (Sandbox Code Playgroud)

文档:https : //docs.nestjs.com/recipes/swagger#enums