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

简而言之,对于键abc,我想使任何具有三个以上中的一个以上的请求失败,因此:

  • http://myapi.com/?a=value,是有效的请求。
  • http://myapi.com/?b=value&c=value2无效

  • 谢谢!

    最佳答案

    如果正好需要abc之一,则您正在寻找object.xor(peers)

    const schema = Joi.object().keys({
        a: Joi.any(),
        b: Joi.any(),
        c: Joi.any()
    }).xor('a', 'b', 'c');
    
    或者,如果仅允许abc中的一种,则为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/

    10-13 03:09