【发布时间】:2020-10-09 15:28:54
【问题描述】:
我在节点项目中使用 joi,我想提出以下规则:我的字段长度可能为 6 或 8(仅此而已),我尝试执行以下操作但它不起作用:
Joi.object({
iban: Joi.string().alphanum().length(6).length(8)
})
最后写的规则会覆盖第一个,所以这里我只接受长度为 8 的值,不再接受长度为 6 的值
提前致谢
【问题讨论】:
我在节点项目中使用 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))
【讨论】: