【发布时间】:2021-10-19 02:51:47
【问题描述】:
我有一个带有下拉输入的表单,所以该输入的选项已经设置好了。
问题是输入的值,尽管是正确的,并且在架构的可接受值范围内,但我收到了 Provider must be one of [[object Set], [object Set]] 的消息。
最奇怪的是这个问题在生产中出现,但在localhost 我没有收到这个验证错误。
provider 来自schema 的键:
provider: Joi.string().required().label('Provider').when('entitlementType', {
is: 'Offer',
then: Joi.string().valid(...providersForSubscriptions),
otherwise: Joi.string().valid(...providersForProducts),
}),
providersForSubscriptions数组:
[
"RBL",
]
providersForProducts数组:
[
"RBL",
"content-store",
"zencore",
"VIP"
]
如您所见,这是一个非常简单的验证,它将接收一些 provider 值,并且如果它在 valid 数组中,它将接受该值。
在浏览器中记录表单。
console.log(entitlementType, provider, providersForProducts);
这是输出:
那么发生了什么?如果我们检查验证警告中的context,则输入值为zencore,zencore 被视为有效值。
有什么想法吗?我应该尝试重构架构吗?为什么这只是产品?
【问题讨论】:
标签: javascript reactjs joi