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

Joi validation: or() and xor() condition depending upon field value

我的架构如下所示:

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

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

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

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

我想你正在寻找这样的东西。 Joi.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')
})

这对我有用。