es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

validando un array de uuids en el cuerpo de swagger de nestjs

Suena como una pregunta bastante simple, pero he estado buscando una solución durante mucho tiempo. Quiero validar un array de UUID en un punto final.

Así:
["9322c384-fd8e-4a13-80cd-1cbd1ef95ba8", "986dcaf4-c1ea-4218-b6b4-e4fd95a3c28e"]

Ya lo he implementado con éxito como un objeto JSON { "id": ["9322c384-fd8e-4a13-80cd-1cbd1ef95ba8", "986dcaf4-c1ea-4218-b6b4-e4fd95a3c28e"]} con el siguiente código:

“` language-all: lang-ts
public getIds(
@Body(ValidationPipe)
uuids: uuidDto
) {
console.log(uuids);
}

<pre><code><br /></code></pre>

import { ApiProperty } from '@nestjs/swagger';
import { IsUUID } from 'class-validator';

export class uuidDto {
@IsUUID('4', { each: true })
@ApiProperty({
type: [String],
example: [
'9322c384-fd8e-4a13-80cd-1cbd1ef95ba8',
'986dcaf4-c1ea-4218-b6b4-e4fd95a3c28e',
],
})
id!: string;
}
“`

Pero desafortunadamente no puedo personalizar la función que llama a ese punto final. Así que necesito una solución para validar solo un array de UUIDs.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para validar una matriz de UUID en un punto final sin usar el objeto JSON, puede modificar su clase uuidDto para aceptar una matriz de cadenas en lugar de una sola cadena:

    import { ApiProperty } from '@nestjs/swagger';
    import { IsUUID } from 'class-validator';
    
    export class uuidDto {
      @IsUUID('4', { each: true })
      @ApiProperty({
        type: [String],
        example: [
          '9322c384-fd8e-4a13-80cd-1cbd1ef95ba8',
          '986dcaf4-c1ea-4218-b6b4-e4fd95a3c28e',
        ],
      })
      id!: string[];
    }
    

    Luego, en la función de su punto final, simplemente puede pasar la matriz de UUID como parámetro y aplicar ValidationPipe a ella:

    public getIds(
      @Body(new ValidationPipe({ transform: true }))
      uuids: string[]
    ) {
      console.log(uuids);
    }
    

    Esto debería validar la matriz de UUID sin necesidad de usar el objeto JSON.

Comments are closed.