Joi 验证两个模式之一

Or *_*cov 4 javascript typescript joi

我有一个简单的对象,其中有几个我想验证的字段。我希望允许特定的验证模式或所有属性都有空值

我创建了以下两个架构:

 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(),
});
Run Code Online (Sandbox Code Playgroud)

我希望创建验证是否应用emptyUserInfoValidationSchema或 的架构nonEmptyUserInfoValidationSchema,但我不知道该怎么做,有什么建议吗?

允许:

{url:"http://some.url", username:"some username", password:"some password"}
{url:"", username:"", password:""}
Run Code Online (Sandbox Code Playgroud)

不允许:

{url:"http://some.url",  username:"", password:""}
Run Code Online (Sandbox Code Playgroud)

Or *_*cov 5

好吧,我终于找到了我要找的东西joi.alternatives

export const ansibleInfoValidationSchema = Joi.alternatives(emptyUserInfoValidationSchema , nonEmptyUserInfoValidationSchema );
Run Code Online (Sandbox Code Playgroud)

似乎可以解决问题