Node.js + Joi, как отобразить пользовательские сообщения об ошибках?

13
задан Raz 10 February 2018 в 12:48
поделиться

2 ответа

Для любого имеющего проблему с

... сообщения не являются функцией

ошибки, необходимо установить joi с npm install @hapi/joi, и импорт ее с @hapi/joi. Я сделал ошибку установки joi без @hapi/ префикс, и это взяло меня некоторое время для нахождения ошибки.

0
ответ дан 29 November 2019 в 03:28
поделиться

Текущий путь (я лично нахожу его лучше), должен использовать .messages() (или .prefs({messages})).

const Joi = require('@hapi/joi');

const joiSchema = Joi.object({
  a: Joi.string()
    .min(2)
    .max(10)
    .required()
    .messages({
      'string.base': `"a" should be a type of 'text'`,
      'string.empty': `"a" cannot be an empty field`,
      'string.min': `"a" should have a minimum length of {#limit}`,
      'any.required': `"a" is a required field`
    })
});

const validationResult = joiSchema.validate({ a: 2 }, { abortEarly: false });
console.log(validationResult.error); // expecting ValidationError: "a" should be a type of 'text'

Использование .errors() не рекомендовано только для обновления сообщения по умолчанию с пользовательским сообщением.

.prefs({ messages }) тщательно продуманный способ предоставить больше возможностей как предпочтения. Другие варианты для prefs выбраны непосредственно от опций .validate ()

Далее чтение: https://<час> github.com/hapijs/joi/issues/2158

Обновление: Я видел, что вышеупомянутое объяснение не удалось для некоторых людей, таким образом, я поднял некоторый код для тестирования себя. Проверьте его здесь: https://runkit.com/embed/fnfaq3j0z9l2

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

1
ответ дан 29 November 2019 в 03:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: