【发布时间】:2020-10-29 12:22:29
【问题描述】:
我正在验证一个 GET 请求查询字符串(使用 express-joi-validation)并要求用户传递至少一个未在架构中直接指定的额外键值对。
我尝试验证如下:
const schema = Joi
.object({
requiredKey: Joi.string().required()
knownExtraKey: Joi.boolean()
})
.pattern(/^/, Joi.string().required())
schema.validate({requiredKey: 'A'}) // valid but shouldn't be
schema.validate({requiredKey: 'A', name: "paul"}) // valid
【问题讨论】:
-
你能分享你想要验证的对象吗?
-
从字面上看,任何对象都应该是有效的。我遇到的问题是,当什么都不通过时它不会抛出无效。我刚刚编辑了提到 express-joi-validation 的问题,这是我用来将 joi 验证器添加到 Express 端点的库
-
您确定
.pattern()应该采用这样的两个参数吗?如果您在文档中搜索“嵌套”,您会看到属性约束是在传递给keys({})的对象中定义的。我从未使用过 Joi,所以这只是我快速阅读的其他内容,您可以尝试一下。 -
如果我将示例修改为
.pattern(/^/, Joi.string().valid('onlythis'))并验证对象{a : 1},我将按预期收到验证错误,因此我相信我对 .pattern 的使用是正确的
标签: javascript validation joi