【发布时间】:2017-08-20 10:10:45
【问题描述】:
有没有一种方法可以使用Joi 验证这样的值,以便我可以验证它是一个具有零个或多个键(任何名称)的对象,并且每个键的值都是字符串、数字或布尔值?
{
dynamicallyNamedKey1: 'some value',
dynamicallyNamedKey2: 4
}
【问题讨论】:
标签: javascript validation joi
有没有一种方法可以使用Joi 验证这样的值,以便我可以验证它是一个具有零个或多个键(任何名称)的对象,并且每个键的值都是字符串、数字或布尔值?
{
dynamicallyNamedKey1: 'some value',
dynamicallyNamedKey2: 4
}
【问题讨论】:
标签: javascript validation joi
您将要使用Joi 的object().pattern() 方法。它专门用于验证具有未知键的对象。
要匹配单个键上的一个或多个数据类型,您需要alternatives().try()(或简单地传递Joi 类型的数组)。
所以符合您需求的规则是:
Joi.object().pattern(/^/, Joi.alternatives().try(Joi.string(), Joi.number(), Joi.boolean()))
【讨论】:
[] 是Joi.alternatives() 的快捷方式。所以你可以这样做:Joi.object().pattern(/^/, [Joi.string(), Joi.number()])