【发布时间】:2019-03-15 22:33:00
【问题描述】:
我一直在努力解决 Joi 的问题,我使用了大量不同的语法来尝试解决它。
基本上我们有以下两种模式。假设下拉菜单中有 5 个选项。如果数组只有一项,则只需要 arraySchemaOne,如果它有多个项,则需要架构一和架构二。
const arraySchemaOne = Joi.object({
dropdown: Joi.string().valid('Option 1')
}).required();
const arraySchemaTwo = Joi.object({
dropdown: Joi.string().valid('Option 2')
}).required();
this.validationPattern = Joi.object().pattern(/\w/, Joi.object(
{
rows: Joi.ref('rows.length >= 2')
?
Joi.array().items([arraySchemaOne, arraySchemaTwo])
:
Joi.array().items([arraySchemaOne])
}
));
如果有人有任何语法可以帮助解决这个问题,那就太好了。这几天我尝试了很多东西,都无法解决这个问题。
【问题讨论】:
-
嗨@KatherineGG28你有理由使用Joi作为前端吗? Joi 对于浏览器验证不是很好,Yup 是具有类似 API 的浏览器替代品。另外,您能否解释一下您在数据方面而不是模式方面试图实现的目标?
-
Joi 是由另一位工程师介绍的,在其他所有情况下,它都非常适合我们的数据模式。基本上我有一个对象数组。当数组中只有一项时,下拉菜单的值必须为选项 1,当两项在其中时,一项的值必须为选项 1,另一项的值必须为选项 2。当有两个以上的项时说 5项目,其中一个必须具有选项 1 的值,另一个必须具有选项 1,但其他 3 可以是任何值。
标签: javascript reactjs validation joi