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 } })
})

以上代码去除了无效的数组元素,如果没有元素通过验证(如果架构需要)则抛出错误。