Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

292
Vistas
Filtre elementos de matriz no válidos según el esquema Yup

Estoy usando yup para validar y escribir datos provenientes de la API. Tengo los siguientes validadores y tipo:

 export const someSchema = object({ id: number().required(), name: string().required(), someArray: array().of(string()), date: dateSchema, }).from('date', 'startDate') export const someListSchema = array().of(someSchema) export type SomeType = InferType<typeof someSchema>;

Y funciona de maravilla, las matrices se validan perfectamente y los tipos se asumen como se esperaba.

El único problema es cómo valido una matriz, haciéndolo de la siguiente manera:

 await someListSchema.validate(data)

Y si algún elemento de una matriz no cumple con los requisitos del validador, arroja un error y todo el proceso de validación falla. Me gustaría deshacerme de los elementos de matriz no válidos y devolver el resto de la matriz. ¿Cómo proceder con la validación filtrando elementos no válidos y manteniéndolos válidos?

Estaba intentando con la opción { abortEarly: false } , también probé el enfoque iterando a través de la matriz para hacer validaciones por elemento, pero sin éxito. ¿Alguna idea sobre cómo lograr el resultado esperado?

Saludos, Bartosz.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede recorrer la matriz y validar los objetos individualmente. De esa manera, puede definir su propia lógica sobre lo que quiere que suceda cuando el objeto no pasa la validación.

Por ejemplo,

 export const someSchema = object({ id: number().required(), name: string().required(), someArray: array().of(string()), date: dateSchema, }).from('date', 'startDate'); const results = await Promise.allSettled(data.map((object) => someSchema.validate(object))); const filteredResults = results.filter(({status}) => status === "fulfilled").map(({value}) => value);
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda