使用JOI验证分隔符分隔的值

ta下

我有一个用例,我需要验证用|分隔的一组值。

我遵循了https://github.com/hapijs/joi/issues/570,但是它引发了许多错误。有什么办法可以做到吗?

示例-AA | BB | CC | DD

现在,我需要验证所有值(AA,BB,CC,DD)都是字符串。

我相信我不能使用正则表达式,因为它只会验证第一个值。

另外,我的代码中还有许多其他验证,因此我不希望循环验证过程。

如果不清楚,请告诉我。谢谢!

输血

TL; DR:

const Joi = require('joi').extend(joi => ({
  base: joi.array(),
  coerce: (value, helpers) => ({
    value: value.split ? value.split('|') : value,
  }),
  type: 'versionArray',
}))

.extend 函数签名已经改变,因为这一评论被写; name属性已被删除,并且CoerceFunction应返回的对象value作为该属性。

> Joi.versionArray().validate('AA|BB|CC|DD')
{ value: [ 'AA', 'BB', 'CC', 'DD' ] }
> Joi.versionArray().validate('AA|BB,CC|DD')
{ value: [ 'AA', 'BB,CC', 'DD' ] }

从这里开始,您可以使用该.items(...)函数来验证返回数组中的每个字符串:

> const regex = new RegExp('^[a-zA-Z]+$') // every character must be a-z or A-Z 
undefined

> Joi.versionArray().items(Joi.string().regex(regex)).validate('AA|BB|CC|DD')
{ value: [ 'AA', 'BB', 'CC', 'DD' ] }

> Joi.versionArray().items(Joi.string().regex(regex)).validate('AA|BB|CC|00')
{ value: [ 'AA', 'BB', 'CC', '00' ],
  error:
   { ValidationError: "[3]" with value "00" fails to match the required pattern: /^[a-zA-Z]+$/ _original: 'AA|BB|CC|00', details: [ [Object] ] } }

> Joi.versionArray().items(Joi.string().regex(regex)).validate('AA|BB,CC|DD')
{ value: [ 'AA', 'BB,CC', 'DD' ],
  error:
   { ValidationError: "[1]" with value "BB,CC" fails to match the required pattern: /^[a-zA-Z]+$/ _original: 'AA|BB,CC|DD', details: [ [Object] ] } }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

验证不带分隔符“-”的UUID

来自分类Dev

位置处缺少值分隔符

来自分类Dev

菜单分隔符

来自分类Dev

使用Null分隔符分割数组

来自分类Dev

使用空格作为分隔符

来自分类Dev

使用单词作为strtok的分隔符?

来自分类Dev

仅使用CSS的导航分隔符

来自分类Dev

如何使用Java分隔符模式?

来自分类Dev

访问数组时使用分隔符

来自分类Dev

如何使用AWK记录分隔符?

来自分类Dev

使用HTML或Javascript的内容分隔符

来自分类Dev

使用跨度创建分隔符

来自分类Dev

仅使用CSS的导航分隔符

来自分类Dev

如何使用Java分隔符模式?

来自分类Dev

使用AWK后的行分隔符

来自分类Dev

使用`column -t`并替换分隔符

来自分类Dev

在Android中使用行分隔符

来自分类Dev

避免使用Cut计算分隔符

来自分类Dev

在C中对'fscanf'使用分隔符

来自分类Dev

使用任何分隔符解析日期

来自分类Dev

cut : 使用“/”作为分隔符

来自分类Dev

对熊猫使用正确的分隔符

来自分类Dev

未使用分隔符读取 nextLong()

来自分类Dev

如何使用分隔符解析数据

来自分类Dev

如何使用分隔符分隔视图中的列元素?

来自分类Dev

将使用空格分隔符的txt文件转换为制表符分隔符

来自分类Dev

C#使用正则表达式用值分隔符分隔名称值对字符串

来自分类Dev

我们如何使用CsvHelper库编写分隔符之类的分隔符?

来自分类Dev

多个字段分隔符,每个分隔符都使用awk出现多次