我正在尝试验证同一条路线上的两个不同的有效负载方案。两个有效选项是:

validate: {
  payload: {
    email: Joi.string().required(),
    password: Joi.string().required()
  }
}




validate: {
  payload: {
    token: Joi.string().required()
  }
}


我尝试使用andor函数的组合,该组合非常接近,但是它允许将所有三个作为有效载荷传递:

validate: {
  payload: Joi.object().keys({
    email: Joi.string().required(),
    password: Joi.string().required(),
    token: Joi.string().required()
  }).and('email', 'password').or('token', 'email', 'password')
}

最佳答案

实际上,我已经解决了。我只需要将xor与两个依赖项之一一起使用:

validate: {
  payload: Joi.object().keys({
    email: Joi.string(),
    password: Joi.string(),
    token: Joi.string()
  }).and('email', 'password').xor('token', 'password')
}

关于javascript - Joi在Hapi.js中提供一条路线和两个有效载荷,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32966075/

10-13 00:01