укажите имя поля вместо "значение" - PullRequest
3 голосов
/ 12 апреля 2020

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

https://hapi.dev/module/joi/

и этого примера кода

const validator: AnySchema = Joi.string().valid('foo', 'bar').required();
const validationResult: ValidationResult = validator.validate('invalid');
const validationError: ValidationError = validationResult.error;

if (validationError) {
    throw validationError;
}

Код выдаст ошибку со следующим сообщением об ошибке

ValidationError: «значение» должно быть одним из [foo, bar]

Есть ли простой способ заменить "value" на конкретное c имя? Поэтому, когда я хочу проверить environment , сообщение об ошибке может быть

ValidationError: "environment" должно быть одним из [development, production, test]

или это возможно только при проверке нескольких значений одновременно?

1 Ответ

1 голос
/ 14 апреля 2020

Существует метод any.label(name), который можно использовать и установить собственную метку, которая будет также отображаться в сообщениях об ошибках:

any.label (имя)

Переопределяет имя ключа в сообщениях об ошибках.

  • name - имя ключа.
const schema = {
    first_name: Joi.string().label('First Name')
};

Вы можете просто сделать:

const validator: AnySchema = Joi
  .string()
  .label('Foo/Bar') // Change tha label using label method
  .valid('foo', 'bar')
  .required();

const validationResult: ValidationResult = validator.validate('invalid');
const validationError: ValidationError = validationResult.error;

if (validationError) {
    throw validationError;
}

выдаст:

ValidationError: "Foo/Bar" must be one of [foo, bar]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...