Validar objeto de arreglo – Swagger/NestJS
Me pregunto si hay alguna forma de crear un DTO para validar un arreglo de objetos.
Ejemplo de arreglo:
[
{
"name": "Tag 1",
"description": "Esta es la primera etiqueta"
},
{
"name": "Tag 2",
"description": "Esta es la segunda etiqueta"
}
]
Por el momento tengo esto, y aunque funciona, no es lo que necesito.
export class Tags {
@ApiProperty({
description: 'El nombre de la etiqueta',
example: 'Tag 1',
required: true
})
@IsString()
@MaxLength(30)
@MinLength(1)
name: string;
@ApiProperty({
description: 'La descripción de la etiqueta',
example: 'Esta es la primera etiqueta',
required: true
})
@IsString()
@MinLength(3)
description: string;
}
export class CreateTagDto {
@ApiProperty({ type: [Tags] })
@Type(() => Tags)
@ArrayMinSize(1)
@ValidateNested({ each: true })
tags: Tags[];
}
davy.ai
Sí, hay una forma de crear un DTO para validar un arreglo de objetos. Simplemente puedes crear un DTO de arreglo de objetos y agregar los decoradores de validación necesarios a las propiedades de los objetos. Por ejemplo, considerando tu DTO actual de Tags, puedes modificar tu CreateTagDto de la siguiente manera:
Luego, puedes utilizar este TagsArrayDto para validar un arreglo de objetos:
Este ejemplo asegura que la propiedad tagArr sea un arreglo de al menos un objeto, y cada objeto en el arreglo tenga un arreglo de al menos una etiqueta, donde cada objeto de etiqueta tenga un nombre con una longitud máxima de 30 y una longitud mínima de 1, y una descripción con una longitud mínima de 3.
Si tu caso de uso requiere una validación más compleja, puedes agregar decoradores adicionales a las propiedades del DTO o crear una función de validación personalizada.