有没有办法可以使用Joi
验证这样的值,以便我可以验证它是一个具有零个或多个键(任何名称)的对象,并且每个都具有字符串,数字的值还是布尔值?
{
dynamicallyNamedKey1: 'some value',
dynamicallyNamedKey2: 4
}
答案 0 :(得分:6)
您将要使用Joi
object().pattern()
方法。它专门用于验证具有未知密钥的对象。
要匹配单个密钥上的一个或多个数据类型,您需要alternatives().try()
(或简单地传递Joi
类型的数组)。
因此符合您需求的规则是:
Joi.object().pattern(/^/, Joi.alternatives().try(Joi.string(), Joi.number(), Joi.boolean()))