JOI,基于数组长度验证不同的数组模式



我一直在遇到我努力解决的问题,我已经使用了大量不同的语法来解决它。

基本上,我们下面有两个模式。说下拉列表中有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

最新更新