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.

Elevar validación cuando se reciba una clave adicional en el objeto yup.

Estoy utilizando yup para validaciones de objetos. Tengo el siguiente esquema

const schema = yup.object().shape({
  name: yup.string().required(),
});

Lo estoy validando con el objeto

{
  "name": "Foo",
  "desc": "Lorem ipsum"
}

Yup valida este objeto aunque tenga una clave adicional desc. Quiero que se genere un error por claves adicionales en el objeto.

He intentado con abortEarly y stripUnknown en .validate pero no funciona.

schema.validateSync(data, { strict: true, stripUnknown: true })
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para generar un error por claves extras en el objeto, puedes usar el método noUnknown del objeto schema. Actualiza el esquema de la siguiente manera:

    const schema = yup.object().noUnknown().shape({
      name: yup.string().required(),
    });
    

    El método noUnknown asegura que solo se permitan las claves especificadas en el esquema en el objeto validado. Cualquier clave adicional generará un error.

    Luego puedes validar el objeto con el esquema actualizado:

    schema.validateSync(data, { strict: true });
    

    Configurar stripUnknown en true en las opciones del método validate eliminará cualquier clave desconocida del objeto validado. Sin embargo, configurar strict en true garantizará que todas las claves del esquema deben estar presentes en el objeto validado, pero no generará un error por claves adicionales. Por lo tanto, utilizar noUnknown es la forma recomendada de manejar claves extras en la validación del objeto.

Comments are closed.