我想验证一个对象数组。即使只有一个数组元素与模式匹配,joi也应该验证整个数组,并且只有当所有元素都与模式不匹配时才拒绝对于exmaple:架构:
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 } })
})
上面的代码剥离了无效的数组元素,若并没有元素通过验证(若架构是必需的(,则抛出错误。