Validar una de las dos estructuras de Joi.
Tengo un objeto simple con unos 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 puedo entender cómo hacerlo, ¿alguna sugerencia?
permitido:
{url: "http://some.url", username: "some username", password: "some password"}
{url: "", username: "", password: ""}
no permitido:
{url: "http://some.url", username: "", password: ""}
davy.ai
Para validar si se aplica
emptyUserInfoValidationSchema
ononEmptyUserInfoValidationSchema
, puedes utilizarJoi.alternatives()
para crear un esquema que permita cualquiera de los dos esquemas.Este esquema permitirá cualquier objeto que cumpla con
nonEmptyUserInfoValidationSchema
oemptyUserInfoValidationSchema
.Para asegurarse de que todas las propiedades tengan valores vacíos, puedes añadir la restricción
.empty()
a cada campo ennonEmptyUserInfoValidationSchema
, de la siguiente manera:Ahora, el
nonEmptyUserInfoValidationSchema
permitirá objetos con valores de cadena vacíos para cada una de sus propiedades.Con estos cambios, el
userInfoValidationSchema
permitirá objetos con valores completamente vacíos, así como objetos que cumplan connonEmptyUserInfoValidationSchema
.