joi验证模式:值可能有几种长度

问题描述

我在节点项目中使用joi,我想遵循以下规则:我的字段长度可能为6或8(没有其他值),我尝试执行以下操作,但不起作用:

Joi.object({
    iban: Joi.string().alphanum().length(6).length(8)
  })

最后写入的规则将覆盖第一个规则,因此在这里我只接受长度为8的值,而不再接受长度为6的值

预先感谢

解决方法

尝试这样编写自定义验证器。 您可以阅读有关自定义验证器here

的更多信息
Joi.object({
    iban: Joi.string().alphanum().custom((value,helper) => {
       if(value.length === 6 || value.length === 8){
           return value;
       } else {
           return helper.message("iban must be 6 or 8 characters long")
       }
    });
})
``
,

这个很好用:

Joi.alternatives().try(Joi.string().alphanum().length(6),Joi.string().alphanum().length(8))