Как добавить пользовательскую функцию валидатора в Joi? - PullRequest
0 голосов
/ 17 октября 2019

У меня есть схема Joi, и я хочу добавить пользовательский валидатор для проверки данных, который невозможен при использовании валидаторов Joi по умолчанию.

В настоящее время я использую Joi

* версии 16.1.7. 1004 *

Но я не смог правильно это осуществить. Я читаю документы Джои, но мне это немного смущает. Может кто-нибудь помочь мне разобраться?

1 Ответ

0 голосов
/ 17 октября 2019

Ваш пользовательский метод должен быть таким:

const method = (value, helpers) => {
  // for example if the username value is (something) then it will throw an error with flowing message but it throws an error inside (value) object without error message. It should throw error inside the (error) object with a proper error message

  if (value === "something") {
    return helpers.error("any.invalid");
  }

  // Return the value unchanged
  return value;
};

Документы:

https://github.com/hapijs/joi/blob/master/API.md#anycustommethod-description

Выход для значения:

{ username: 'something' }

Выход для ошибки:

[Error [ValidationError]: "username" contains an invalid value] {
  _original: { username: 'something' },
  details: [
    {
      message: '"username" contains an invalid value',
      path: [Array],
      type: 'any.invalid',
      context: [Object]
    }
  ]
}
...