【问题标题】:Validate an array of objects with class-validator and Nest.js使用 class-validator 和 Nest.js 验证对象数组
【发布时间】:2022-01-19 01:47:30
【问题描述】:

我正在使用带有 NestJS 的类验证器,并尝试使用以下布局验证对象数组:

[
    {gameId: 1, numbers: [1, 2, 3, 5, 6]},
    {gameId: 2, numbers: [5, 6, 3, 5, 8]}
]

我的解析器

createBet(@Args('createBetInput') createBetInput: CreateBetInput) {
    return this.betsService.create(createBetInput);
  }

我的 createBetInput DTO

import { InputType, Field, Int } from '@nestjs/graphql';
import { IsArray, IsNumber } from 'class-validator';

@InputType()
export class CreateBetInput {
  @IsNumber()
  @Field(() => Int)
  gameId: number;

  @Field(() => [Int])
  @IsArray()
  numbers: number[];
}

我尝试了一些解决方案,但没有成功,老实说,我不知道该怎么做。

如何修改 DTO 以获得必要的验证?

【问题讨论】:

    标签: javascript typescript graphql nestjs class-validator


    【解决方案1】:

    class-validatorclass-transformer 混合的选项可用于验证嵌套对象,您的 Array 也是嵌套对象,因此您可以像这样进行验证:

    import { Type } from 'class-transformer';
    import { IsArray, ValidateNested } from 'class-validator';
    
    class ItemsOfBet {
      @IsArray()
      @ValidateNested({ each: true })
      @Type(() => CreateBetInput)
      items: CreateBetInput[];
    }
    

    【讨论】:

      猜你喜欢
      • 2020-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      • 2022-01-24
      • 1970-01-01
      • 2020-08-07
      • 2020-03-09
      相关资源
      最近更新 更多