如何检查对象中的键是否具有特定值?

时间:2019-08-08 02:52:46

标签: express joi

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

例如,我有这个架构 parking

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

我只希望其中任何一个键的值都为 true 才有效。因此,如果用户为所有属性提供 false ,则它应该无效。

Joi具有此when属性,我可以附加该属性以基于提供的值添加验证,但是我不确定是否可以在我的情况下使用它。

1 个答案:

答案 0 :(得分:0)

正在寻找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()
});