Joi验证:根据另一个键的值有条件地验证一个键

时间:2019-07-24 08:43:04

标签: node.js hapijs joi

我试图根据另一个密钥的值来验证一个密钥。在下面的示例中,我尝试基于has_sub_category的值来验证category_children.has_sub_category可以为true或false。如果为false,则category_children应该为空数组。如果为true,则不应为空。

category_children: Joi.when('category_has_sub_category',
            {is: false,
            then: Joi.array().max(0),
            otherwise: Joi.array().items(Joi.objectId()).min(1)}),
category_has_sub_category: Joi.boolean(),

但是上面的代码似乎不起作用。当has_sub_ category为false且category_children不为空并且反之亦然时,它将得到验证

1 个答案:

答案 0 :(得分:0)

您非常接近,只需要使用any.allow(...values)来允许一个空数组。

所以改变这个

 then: Joi.array().max(0)

对此

 then: Joi.array().max(0).allow([])
相关问题