Joi需要动态密钥

时间:2018-02-27 14:27:01

标签: validation typescript hapijs joi

我在一个Typescript项目中使用Joi 10.6.0来验证一系列请求的有效负载。在验证有效负载中的动态密钥时,我遇到了最棘手的问题:

validate: {
   payload: Joi.object()
         .pattern(/^id_[\s\S]*$/i, Joi.string().required())
         .keys({
             state: Joi.string().optional(),
             presentation: Joi.string().optional(),
  // etc

我的想法是,我希望有效负载包含至少一个以id_开头的密钥。唉,该模式键上的required属性似乎完全被忽略了。

正则表达式正确匹配键,如果我对值进行其他类型的验证,例如Joi.number(),则相应地验证值,但是如果我使用string().required()并且{{1}的值不在有效载荷中,验证,令人费解,仍然通过。简而言之,似乎应用了任何验证,条形id_

我确信我做的事情很愚蠢,但我很难过 - 我每天都使用Joi而且我从未遇到过这样的问题。

0 个答案:

没有答案