如何解决根据Joi中其他多个参数的值为一个请求参数设置规则
我正在使用 Joi 来验证对我的 API 的请求。
我正在努力实现以下目标:
- 如果平台为
aws
且引擎为premium
,则不应出现场距。 - 在其他情况下,场距是可选的,有效值为
default
、x-low
、low
、medium
、high
和 {{ 1}}。
我尝试过类似的方法,但对我不起作用。
x-high
知道如何使用 Joi 实现这一目标吗?
解决方法
您的何时应该与您的对象相关:
Joi.object({
platform: Joi.string().valid("aws","google","azure").required(),engine: Joi.string().valid("standard","premium").required(),pitch: Joi.string().valid('default','x-low','low','medium','high','x-high'),})
.when(Joi.object({ platform: Joi.valid('aws'),engine: Joi.valid('premium') }).unknown(),{
then: Joi.object({ pitch: Joi.forbidden() })
})
,
当平台为aws
且引擎为premium
时,此架构将使pitch被禁止 >
const pitch = Joi.when(
'platform',{
is: 'aws',then: Joi.when(
'engine',{
is: 'premium',then: Joi.forbidden(),otherwise: Joi.string().valid('default','x-high')
}
)
}
)
const schema = Joi.object({
platform: Joi.string().valid("aws",pitch
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。