1

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

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

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

我尝试使用非常接近的and和函数的组合,但它允许将所有三个函数作为有效负载传递:or

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

1 回答 1

7

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

validate: {
  payload: Joi.object().keys({
    email: Joi.string(),
    password: Joi.string(),
    token: Joi.string()
  }).and('email', 'password').xor('token', 'password')
}
于 2015-10-06T09:15:21.380 回答