Расширение валидатора Joi, которое имеет возвращаемое значение в setup (), не вызывает validate () - PullRequest
1 голос
/ 14 марта 2019

Я создал расширение, которое реализует как setup(), так и validate().Я ожидаю, что оба метода будут вызваны, что они и есть. Но , если мой setup() метод возвращает значение, validate() полностью пропускается и никогда не вызывается.

Я бы хотел, чтобы мой setup() возвратил значение и все ещебыть в состоянии до проверки в validate().

const WebhookUrlExtension = (joi) => joi.extend({
  base: joi.string(),
  name: 'string',
  rules: [
    {
      name: 'webhookUrl',
      validate (params, value, state, options) {
        console.log('VALIDATE') // not firing :( 
        return value;
      },
      params: {
        options: joi.object({
          scheme: joi.array().items(joi.string()).optional()
        })
      },
      setup (params) {
        console.log('SETUP') // this gets executed fine
        const regex = /^.+:\/\/.+/;
        const uriOpts = {
          scheme: Hoek.reach(params, 'options.scheme', { default: ['https'] })
        };
        return Joi.string().uri(uriOpts).regex(regex);  // if I remove this return statement, validate does run
      }
    }
  ]
});
...