Joi Validation - 即使只有一个元素匹配模式也验证数组
Joi Validation- Validate array even if only one element matches schema
我想验证一组对象。
并且 joi 应该验证整个数组,即使只有一个数组元素匹配模式,并且仅当所有元素都不匹配模式时才拒绝
例如:
架构:
Joi.object({
data: Joi.array()
.items(Joi.object({a: Joi.number(), b: Joi.string()}))
})
这必须通过 joi 验证:
[{a:23, b: "Ddd"}, {a:23, b: 34}]
只需要一次数组元素验证就可以通过数组验证。
这不能通过验证:
[{a:23, b: 23}, {a:23, b: 34}]
以上数组的所有元素均未通过验证,因此数组验证也失败。
谢谢
我可以使用 stripUnknown 选项解决我的问题。
Joi.object({
data: Joi.array()
.items(Joi.object({a: Joi.number(), b: Joi.string()}))
.options({ stripUnknown: { arrays: true } })
})
以上代码去除了无效的数组元素,如果没有元素通过验证(如果架构需要)则抛出错误。
我想验证一组对象。 并且 joi 应该验证整个数组,即使只有一个数组元素匹配模式,并且仅当所有元素都不匹配模式时才拒绝 例如: 架构:
Joi.object({
data: Joi.array()
.items(Joi.object({a: Joi.number(), b: Joi.string()}))
})
这必须通过 joi 验证:
[{a:23, b: "Ddd"}, {a:23, b: 34}]
只需要一次数组元素验证就可以通过数组验证。
这不能通过验证:
[{a:23, b: 23}, {a:23, b: 34}]
以上数组的所有元素均未通过验证,因此数组验证也失败。
谢谢
我可以使用 stripUnknown 选项解决我的问题。
Joi.object({
data: Joi.array()
.items(Joi.object({a: Joi.number(), b: Joi.string()}))
.options({ stripUnknown: { arrays: true } })
})
以上代码去除了无效的数组元素,如果没有元素通过验证(如果架构需要)则抛出错误。