我一直在遇到我努力解决的问题,我已经使用了大量不同的语法来解决它。
基本上,我们下面有两个模式。说下拉列表中有5个选项。如果数组仅具有一项仅需要一个arrayschemeone,并且如果它具有多个项目,则需要一个架构一个和两个。
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 API公开了when
方法,您可以通过您已经作为第一个参数的REF传递,然后用您的选项填充选项替代模式。附带说明,如果另一位工程师介绍了库,则至少应该在存储库上查看README文件,该文件显然指出了该LIB的设计并不是考虑到浏览器。
https://github.com/hapijs/joi/blob/v14.3.1/api.md#anywhencondition-options