使用 class-validator 和 Nest.js 验证对象数组

Joã*_*rto 2 javascript typescript graphql class-validator nestjs

我将类验证器与 NestJS 结合使用,并尝试使用以下布局验证对象数组:

[
    {gameId: 1, numbers: [1, 2, 3, 5, 6]},
    {gameId: 2, numbers: [5, 6, 3, 5, 8]}
]
Run Code Online (Sandbox Code Playgroud)

我的解析器

createBet(@Args('createBetInput') createBetInput: CreateBetInput) {
    return this.betsService.create(createBetInput);
  }
Run Code Online (Sandbox Code Playgroud)

我的 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[];
}
Run Code Online (Sandbox Code Playgroud)

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

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

Sae*_*adi 6

有一些选项class-validator用于class-transformer验证嵌套对象,您的数组也是一个嵌套对象,因此您可以像这样验证:

import { Type } from 'class-transformer';
import { IsArray, ValidateNested } from 'class-validator';

class ItemsOfBet {
  @IsArray()
  @ValidateNested({ each: true })
  @Type(() => CreateBetInput)
  items: CreateBetInput[];
}
Run Code Online (Sandbox Code Playgroud)