Cla*_*kie 0 javascript node.js hapijs joi
我正在尝试在同一路由上验证两个不同的有效负载模式.两个有效选项是:
validate: {
payload: {
email: Joi.string().required(),
password: Joi.string().required()
}
}
Run Code Online (Sandbox Code Playgroud)
和
validate: {
payload: {
token: Joi.string().required()
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用and和or函数的组合非常接近,但它允许所有三个作为有效负载传递:
validate: {
payload: Joi.object().keys({
email: Joi.string().required(),
password: Joi.string().required(),
token: Joi.string().required()
}).and('email', 'password').or('token', 'email', 'password')
}
Run Code Online (Sandbox Code Playgroud)
实际上,我解决了这个问题.我需要使用xor两个依赖中的一个:
validate: {
payload: Joi.object().keys({
email: Joi.string(),
password: Joi.string(),
token: Joi.string()
}).and('email', 'password').xor('token', 'password')
}
Run Code Online (Sandbox Code Playgroud)