一个路由,两个有效的有效负载在Hapi.js与Joi

One route, two valid payloads in Hapi.js with Joi

本文关键字:有效 Hapi Joi 负载 js 两个 一个 路由      更新时间:2023-09-26

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

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')
}