我在一个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而且我从未遇到过这样的问题。