Joi验证器仅是键之一

DSCH

我正在开发一种应允许多个参数的api,但是对于其中的三个参数,我只希望其中的一个。每个键的值都比较容易,但是我想知道Joi是否也允许它,或者我应该在服务器中添加额外的验证逻辑。

简而言之,对于keys ab或者c我想使任何具有三个以上之一以上的请求失败,因此:

  1. http://myapi.com/?a=value有效的请求。

  2. http://myapi.com/?b=value&c=value2无效的

谢谢!

拉斐尔·拉法特帕纳(Raphael Rafatpanah)

您正在寻找object.xor(对等),如果正好一个ab或者c是必需的。

定义一组键之间的排他关系,其中一个键是必需的,但不同时:

  • peers-专用密钥名称,这些名称不能一起出现,但需要其中之一。peers可以是单个字符串值,字符串值数组或作为参数提供的每个对等项。
const schema = Joi.object().keys({
    a: Joi.any(),
    b: Joi.any(),
    c: Joi.any()
}).xor('a', 'b', 'c');

或者,object.oxor(同行)如果只有一个ab或者c是允许的,但都不需要。

定义一组键之间的排他关系,其中只允许一个,而在以下情况则不需要:

  • peers -排他键名不能一起出现,但不需要。
const schema = Joi.object().keys({
    a: Joi.any(),
    b: Joi.any(),
    c: Joi.any()
}).oxor('a', 'b', 'c');

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章