一条路线,两个有效载荷 Hapi.js with Joi
One route, two valid payloads in Hapi.js with Joi
我正在尝试验证同一路由上的两个不同的负载模式。两个有效选项是:
validate: {
payload: {
email: Joi.string().required(),
password: Joi.string().required()
}
}
和
validate: {
payload: {
token: Joi.string().required()
}
}
我尝试使用 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')
}
其实我已经解决了。我需要将 xor
与两个依赖项之一一起使用:
validate: {
payload: Joi.object().keys({
email: Joi.string(),
password: Joi.string(),
token: Joi.string()
}).and('email', 'password').xor('token', 'password')
}
我正在尝试验证同一路由上的两个不同的负载模式。两个有效选项是:
validate: {
payload: {
email: Joi.string().required(),
password: Joi.string().required()
}
}
和
validate: {
payload: {
token: Joi.string().required()
}
}
我尝试使用 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')
}
其实我已经解决了。我需要将 xor
与两个依赖项之一一起使用:
validate: {
payload: Joi.object().keys({
email: Joi.string(),
password: Joi.string(),
token: Joi.string()
}).and('email', 'password').xor('token', 'password')
}