【问题标题】:NestJS class-validators on incoming requests using interface使用接口传入请求的 NestJS 类验证器
【发布时间】:2021-12-10 07:44:15
【问题描述】:

我需要通过 class-validator 使用接口来验证传入请求正文中特定字段的传入表单。

界面:

export enum Fields {
  Full_Stack_Dev = 'full stack dev',
  Frontend_Dev = 'frontend dev',
  Backend_Dev = 'backend dev',
}

export interface Experience {
  field: Fields;
  years: number;
}

这里是DTO 类:

@IsEnum(Languages)
  languages: Languages[];

  experience: Experience[]; // ???? Not sure which decorator to use for interfaces 

【问题讨论】:

标签: node.js typescript nestjs class-validator


【解决方案1】:

好的,经过大量研究,我找到了解决方法:

首先,接口不能直接使用。由 class-validators issue here正式声明

这就是我所做的:

  1. 将接口更改为单独的类并添加对其属性的验证
class ExperienceDto {
  @IsEnum(Fields)
  field: Fields;
  @IsNumber()
  years: number;
}
  1. 然后使用这个类作为类型来验证ACTUAL DTO CLASS(不是上面那个)中的对象数组
  @ArrayNotEmpty()
  @ArrayMinSize(1)
  @ArrayMaxSize(3)
  @ValidateNested({ each: true })
  @Type(() => ExperienceDto) // imported from class-transformer package
  experience: ExperienceDto[];

【讨论】:

    猜你喜欢
    • 2020-05-20
    • 2021-09-24
    • 2022-08-02
    • 2018-01-17
    • 1970-01-01
    • 2020-10-17
    • 2021-03-09
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多