【问题标题】:Nestjs IsEnum dto validation and swaggerNestjs IsEnum dto 验证和招摇
【发布时间】:2020-09-30 00:55:08
【问题描述】:

这工作正常:

    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;
    }

并且大摇大摆地看起来像这样:

我正在尝试了解如何将严重性类型更改为枚举,我已经尝试过:

export enum Severity {
  Critical = 1,
  Major = 2,
  Minor = 3,
  Warning = 2,
  Info = 1,
  Clear = 0,
}
    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;
    }

虽然它正在工作,但 swagger 看起来有点不对劲(示例不正确,并且架构中严重性的描述嵌套在括号中:

【问题讨论】:

    标签: nestjs nestjs-swagger


    【解决方案1】:

    如果你想在 SwaggerUI 上表达一个枚举,你需要提供enum 属性给ApiProperty 装饰器

     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;
     }
    

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

    【讨论】:

    • 谢谢,我正在研究那个文档,但那个具体的例子不知何故逃过了我的眼睛.. :/
    • 实际上该链接现在被重定向到docs.nestjs.com/openapi/introduction,其中没有提及枚举。 Nest 的招摇整合似乎是一个记录不充分的话题
    猜你喜欢
    • 1970-01-01
    • 2021-09-28
    • 2020-02-24
    • 2019-04-01
    • 2021-01-05
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多