【问题标题】:Joi Validation- Validate array even if only one element matches schemaJoi Validation - 验证数组,即使只有一个元素与模式匹配
【发布时间】:2020-03-31 14:03:00
【问题描述】:

我想验证一个对象数组。 即使只有一个数组元素与模式匹配,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}]

数组的所有元素都没有通过验证,因此数组验证也失败了。

谢谢

【问题讨论】:

    标签: javascript node.js validation joi


    【解决方案1】:

    我可以通过使用 stripUnknown 选项来解决我的问题。

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

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

    【讨论】:

      猜你喜欢
      • 2019-07-08
      • 2022-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多