【问题标题】:How to check if the keys in an object has certain value?如何检查对象中的键是否具有特定值?
【发布时间】:2019-12-15 16:33:48
【问题描述】:

我正在使用 Joi 来验证我的架构。我想检查该架构中的任何一个键是否具有特定值。

例如我有这个架构 停车

parking: Joi.object({
 twoWheelers: Joi.boolean(),
 fourWheelers: Joi.boolean(),
 handicapped: Joi.boolean(),
})

我希望它仅在任何一个键具有值 true 时才有效。因此,如果用户为所有属性提供 false 它应该是无效的。

Joi 有这个 when 属性,我可以附加它以根据提供的值添加验证,但我不确定是否可以在我的情况下使用它。

【问题讨论】:

    标签: express joi


    【解决方案1】:

    寻找object.or(peers)

    定义需要其中一个对等点(并且允许多个对等点)的键之间的关系,其中:

    • peers - 必须至少出现一个的键名。
    • options - 可选设置:
      • separator - 覆盖默认值。层次分隔符。设置为 false 以将 key 视为文字值。

    const schema = Joi.object({
        parking: Joi.object({
            twoWheelers: Joi.boolean(),
            fourWheelers: Joi.boolean(),
            handicapped: Joi.boolean(),
        }).or('twoWheelers', 'fourWheelers', 'handicapped').invalid(false)
          // or without invalid
          //.or('twoWheelers', 'fourWheelers', 'handicapped')
        smackMyPinchUp: Joi.any()
    });
    

    【讨论】:

    • or 仅检查给定属性之一是否存在。我想要的是检查其中至少一个是否具有真实价值。我不确定您是否正确理解了我的问题,但我希望用户在提交表单时至少提供一个停车类型
    猜你喜欢
    • 1970-01-01
    • 2019-03-31
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 2012-06-05
    相关资源
    最近更新 更多