Сначала хочу рассказать небольшую историю потом перейдем к теме а это связано с темой так что не пропускайте.

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

Joi — самый мощный и полезный пакет для описания и проверки схемы. Мы можем создать план или схемы для объекта JavaScript для проверки и получения точных данных.

Образец схемы Джой

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

Здесь я добавил одну функцию под названием messages, которая помогает отправлять пользовательские сообщения для определенной функции. Предположим, что кто-то передает пустой номер мобильного телефона в полезной нагрузке запроса, тогда мы проверим полезную нагрузку запроса с помощью этой схемы, чтобы она выдавала правильное сообщение об ошибке «мобильный телефон должен содержать значение».

Проще говоря, я могу сказать, что мы можем установить собственное сообщение для каждой функции. На самом деле, это очень полезно для функции регулярного выражения.

Проверка

Я создаю еще один файл для проверки Joi, и я вызову эту функцию, чтобы проверить тело полезной нагрузки с заданной схемой, чтобы мы могли найти точную ошибку, если она существует. В Joi есть функция под названием validateAsync, которая помогает проверять полезные данные запроса с заданной схемой. Здесь я хочу объяснить часть блока catch, потому что это немного сложно понять. Я просто форматирую сообщение об ошибке в соответствии с путем для чтения пользователем. Ниже я также делюсь подробностями об ошибках, чтобы понять этот небольшой комплекс.

Полезная нагрузка

{
    "mobile": ""
}

Здесь я вызываю API входа с этой полезной нагрузкой, и вы обязательно получите сообщение об ошибке, потому что вы добавили проверку Joi. Я также добавил информацию об ошибке, которую вы получите после проверки Joi. вы легко свяжете эту деталь ошибки с логикой верхнего формата. Вы можете создать свой собственный формат сообщения об ошибке, используя эту информацию об ошибке, чтобы пользователь мог легко понять это сообщение и сделать полезную нагрузку точной.

Подробная информация об ошибке из проверки Joi

[Error [ValidationError]: "" must contain value. "" is a required field] {
  _original: { mobile: '' },
  details: [
    {
      message: '"" must contain value',
      path: [Array],
      type: 'string.empty',
      context: [Object]
    },
    {
      message: '"" is a required field',
      path: [Array],
      type: 'any.required',
      context: [Object]
    }
  ]
}

Вывод

Мы можем легко добавить проверку Joi в любой проект узла, и мы можем проверить входящую полезную нагрузку с помощью схемы определения, чтобы мы могли иметь дело с неточными данными. Еще хочу сказать, что это применимо только для пакета «@hapi/joi».