我正在开发一种应允许多个参数的api,但是对于其中三个参数,我只想允许其中一个。
使用每个键的值更容易,但是我想知道Joi是否也允许它,或者我应该在服务器中添加额外的验证逻辑。
简而言之,对于键a
,b
或c
,我想使任何具有三个以上中的一个以上的请求失败,因此:
http://myapi.com/?a=value
是,是有效的请求。 http://myapi.com/?b=value&c=value2
是无效。 谢谢!
最佳答案
如果正好需要a
,b
或c
之一,则您正在寻找object.xor(peers)。
const schema = Joi.object().keys({
a: Joi.any(),
b: Joi.any(),
c: Joi.any()
}).xor('a', 'b', 'c');
或者,如果仅允许a
,b
或c
中的一种,则为object.oxor(peers),但都不需要。const schema = Joi.object().keys({
a: Joi.any(),
b: Joi.any(),
c: Joi.any()
}).oxor('a', 'b', 'c');
关于javascript - Joi验证器仅是键之一,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54695534/