1

同じルートで 2 つの異なるペイロード スキーマを検証しようとしています。有効なオプションは次の 2 つです。

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

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

and非常に近いと関数の組み合わせを使用してみましたorが、3 つすべてをペイロードとして渡すことができます。

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

実際、私はそれを解決しました。xor2 つの依存関係のうちの 1 つだけを使用する必要がありました。

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 に答える