有没有办法验证Joi架构中的动态密钥名称?

197*_*977 5 javascript validation joi

有没有办法可以验证这样的值,Joi以便我可以验证它是一个零或多个键(任何名称)的对象,并且每个都有字符串,数字或布尔值?

{
  dynamicallyNamedKey1: 'some value',
  dynamicallyNamedKey2: 4
}
Run Code Online (Sandbox Code Playgroud)

Ank*_*nkh 7

你会想要使用Joiobject().pattern()方法.它专门用于验证具有未知密钥的对象.

要匹配单个键上的一个或多个数据类型,您需要alternatives().try()(或简单地传递一组Joi类型).

因此符合您需求的规则是:

Joi.object().pattern(/^/, Joi.alternatives().try(Joi.string(), Joi.number(), Joi.boolean()))
Run Code Online (Sandbox Code Playgroud)

  • 请注意,简单的数组 `[]` 是 `Joi.alternatives()` 的快捷方式。所以你可以这样做:`Joi.object().pattern(/^/, [Joi.string(), Joi.number()])` (3认同)