Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

337
Visualizações
Joi validate one of two schemas

I have a simple object with few fields that I would like to validate. I wish to allow or a specific validation schema or that all of the properties have empty values

I created the following two schemas:

 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(),
});

I wish to create schema that validates if emptyUserInfoValidationSchema or nonEmptyUserInfoValidationSchema is applied but I can't figure out how to do it, any suggestions?

allowed:

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

not allowed:

{url:"http://some.url",  username:"", password:""}
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Well I finally found what I was looking for joi.alternatives:

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

seems to do the trick

about 4 years ago · Juan Pablo Isaza Relatório

0

I hope this helps you can use the when condition in 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)})
});

here's a link to when docs Joi When Condtion

about 4 years ago · Juan Pablo Isaza Relatório

0

You use the .keys().and() to specify peers. This means that none of the fields specified in the .and() will exist without each other. Hence should be used as so:

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda