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.

Nest js: Cómo recibir un campo dto con un array de cadenas predefinidas.

Tengo un DTO llamado producto y tiene un campo llamado unidades… que recibe un arreglo de cadenas y estas cadenas están predefinidas.

Mis cadenas válidas están predefinidas en un arreglo…

let validItems = ['a', 'b', 'c', 'd', 'e']

Los datos que deseo que sean aceptados por mi DTO son…

{
   product_id: 1,
   units: ['a', 'b', 'c']
}

{
  product_id: 2,
  units: ['c', 'e', 'd']
}

{
   product_id: 3,
   units: ['e', 'b', 'a']
}

Mi DTO actual (no cumple con los requisitos) es…

export class Product {
  @IsString({ message: 'El ID del producto debe ser una cadena' })
  product_id: string;

  @IsArray({ message: 'Las unidades deben ser un arreglo' })
  @IsString({ each: true, message: 'Debe ser una cadena' })
  units: string[];
}

¿Cómo debería ser mi DTO en Nest.js? Como soy nuevo en Nest.js, por favor, proporcionenme algunos buenos enlaces de referencia para estos decoradores.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para asegurarte de que el campo de unidades en tu DTO solo acepte cadenas de texto que estén predefinidas en el arreglo validItems, puedes utilizar el validador IsIn de la biblioteca class-validator en tu DTO:

    import { IsArray, IsIn, IsString } from 'class-validator';
    
    export class ProductDTO {
       @IsString()
       product_id: string;
    
       @IsArray()
       @IsIn(['a', 'b', 'c', 'd', 'e'], { each: true })
       units: string[];
    }
    

    Este DTO validará que el campo units solo contenga cadenas de texto que estén en el arreglo validItems. Puedes obtener más información sobre los diferentes decoradores de validación disponibles en class-validator en su documentación: https://github.com/typestack/class-validator#validation-decorators

    En cuanto a la documentación de Nest.js, su documentación oficial es un gran recurso para comenzar: https://docs.nestjs.com/. También tienen una sección dedicada al uso de class-validator con Nest.js: https://docs.nestjs.com/techniques/validation#using-validation-pipes

    ¡Espero que esto ayude!

Comments are closed.