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

332
Vistas
Joi valida uno de dos esquemas

Tengo un objeto simple con pocos campos que me gustaría validar. Deseo permitir un esquema de validación específico o que todas las propiedades tengan valores vacíos

Creé los siguientes dos esquemas:

 const nonEmptyUserInfoValidationSchema = Joi.object({ url: Joi.string().uri().required(), username: Joi.string().required().min(usernameMinLength), password: Joi.string().required().min(passwordMinLength), }); const emptyUserInfoValidationSchema = Joi.object({ url: Joi.string().empty().required(), username: Joi.string().empty().required(), password: Joi.string().empty().required(), });

Deseo crear un esquema que valide si se aplica emptyUserInfoValidationSchema o nonEmptyUserInfoValidationSchema pero no sé cómo hacerlo, ¿alguna sugerencia?

permitió:

 {url:"http://some.url", username:"some username", password:"some password"} {url:"", username:"", password:""}

No permitido:

 {url:"http://some.url", username:"", password:""}
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Bueno, finalmente encontré lo que estaba buscando joi.alternatives :

 export const ansibleInfoValidationSchema = Joi.alternatives(emptyUserInfoValidationSchema , nonEmptyUserInfoValidationSchema );

Parece funcionar

about 4 years ago · Juan Pablo Isaza Denunciar

0

Espero que esto te ayude, puedes usar la condición when en Joi

 var schema = Joi.object({ url : Joi.any().when('username',{is: Joi.empty(), then: Joi.empty().required(),otherwise: Joi.string().required()}), username: Joi.when('password',{is: Joi.empty(), then: Joi.empty(),otherwise: Joi.string().required().min(usernameMinLength)}) });

aquí hay un enlace a when docs Joi When Condtion

about 4 years ago · Juan Pablo Isaza Denunciar

0

.keys().and() para especificar compañeros. Esto significa que ninguno de los campos especificados en .and() existirá uno sin el otro. Por lo tanto, debe usarse como tal:

 const schema = Joi.object({ url: Joi.string().uri(), username: Joi.string().min(usernameMinLength), password: Joi.string().min(passwordMinLength) }).keys().and('url', 'username', 'password');

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