Joi 验证:or() 和 xor() 条件取决于字段值

问题描述

我有一个看起来像这样的架构:

{
   a: joi.boolean(),b: joi.object(),c: joi.object()
}

根据字段 a = false 的值,我希望字段 b 或 c 存在。如果 a 为假,我想要字段 b 和 c 的异或条件。

我尝试使用when,但找不到完美的解决方案。

解决方法

我可以为这个问题找到一种可能的解决方案。就是这样。

Joi.object({
 a: Joi.boolean(),b: Joi.object(),c: Joi.object()
})
.required()
.when( Joi.object({a:false}).unknown(),{
 then: Joi.object().or('a','b'),otherwise: Joi.object().oxor('a','b')
})

这对我有用。

,

{
   a: Joi.boolean(),b: Joi.object().when('a',{
      is: false,then: Joi.object().required()
      otherwise: Joi.object()
   }),c: Joi.object().when('a',}

我认为您正在寻找这样的东西。 Joi.when()