Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

334
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!