简体   繁体   English

Joi Validation- 即使只有一个元素与架构匹配,也验证数组

[英]Joi Validation- Validate array even if only one element matches schema

I would like to validate an array of objects.我想验证一组对象。 And joi should validate the whole array even if only one array element matches schema and reject only if all elements don't match the schema for exmaple: schema:并且 joi 应该验证整个数组,即使只有一个数组元素与架构匹配,并且仅在所有元素与架构不匹配时才拒绝,例如:schema:

Joi.object({
  data: Joi.array()
    .items(Joi.object({a: Joi.number(), b: Joi.string()})) 
})

This must pass joi validation: [{a:23, b: "Ddd"}, {a:23, b: 34}]这必须通过 joi 验证: [{a:23, b: "Ddd"}, {a:23, b: 34}]

Only one array element validation should be enough to pass the array validation.只有一个数组元素验证应该足以通过数组验证。

This must not pass validation:这不能通过验证:

[{a:23, b: 23}, {a:23, b: 34}]

Above all elements of the array fails the validation , hence array validation also fails.数组的所有元素均未通过验证,因此数组验证也失败。

Thanks谢谢

I am able to solve my problem by using stripUnknown option.我可以通过使用 stripUnknown 选项解决我的问题。

Joi.object({
  data: Joi.array()
    .items(Joi.object({a: Joi.number(), b: Joi.string()}))
    .options({ stripUnknown: { arrays: true } })
})

Above code strips invalid array elements and throws error if no elements passes validation if schema has required.上面的代码去除无效的数组元素,如果没有元素通过验证,如果架构需要,则抛出错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM