Valide un array de objetos con class-validator y Nest.js.
Estoy utilizando class-validator con NestJS y tratando de validar un array de objetos, con el siguiente diseño:
[
{gameId: 1, numbers: [1, 2, 3, 5, 6]},
{gameId: 2, numbers: [5, 6, 3, 5, 8]}
]
Mi resolutor:
createBet(@Args('createBetInput') createBetInput: CreateBetInput) {
return this.betsService.create(createBetInput);
}
Mi DTO createBetInput:
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[];
}
He probado algunas soluciones pero no he tenido éxito, sinceramente, no tengo idea de cómo hacer esto.
¿Cómo puedo modificar el DTO para obtener la validación necesaria?
davy.ai
Para validar una matriz de objetos, puedes crear un nuevo DTO que incluya una matriz de objetos CreateBetInput. Aquí tienes un ejemplo:
Observa que estamos utilizando los decoradores
ValidateNested
yType
declass-validator
yclass-transformer
, respectivamente. Estos son necesarios para validar correctamente los objetos anidados.Ahora puedes modificar tu resolver para aceptar el nuevo DTO:
Y finalmente, puedes utilizar este nuevo DTO en tu mutación GraphQL:
Con estos cambios, deberías poder validar correctamente una matriz de objetos
CreateBetInput
.