我正在为我的api建立一个hapi-swagger界面。其中一个查询参数 type 有另一个查询参数 subtype ,它取决于前者。我已经找到了如何实现Joi
validation for it successfully但是在界面上没有那么成功。我的验证码是
{
type: Joi.string()
.valid('image', 'publication', 'dataset')
.optional(),
subtype: Joi.string()
.optional()
.when('type', {is: 'image', then: Joi.valid('png', 'jpg')})
.when('type', {is: 'publication', then: Joi.valid('newspaper', 'book')})
.description('subtype based on the file_type')
}
但界面仅为子类型显示 png 和 jpg 。关于如何实现这一点的建议,以便正确的子类型显示何时选择了相应的类型?
答案 0 :(得分:0)
我尝试了类似的东西,它对我来说很好。请查看下面的代码:
Joi.object().keys({
billFormat: Joi.string().valid('sms', 'email').required(),
email: Joi.string()
.when('ebillFormat', { is: 'sms', then: Joi.valid('a', 'b') })
.when('ebillFormat', { is: 'email', then: Joi.valid('c', 'd') }),
});
我的有效载荷如下所示:
{
"ebillFormat": "email",
"email": "hello"
}
我得到的错误如下:
{
"statusCode": 400,
"error": "Bad Request",
"message": "child \"email\" fails because [\"email\" must be one of [c, d]]",
"validation": {
"source": "payload",
"keys": [
"email"
]
}
}
请让我知道您的目标是什么,以及您面临的问题。