Сначала хочу рассказать небольшую историю потом перейдем к теме а это связано с темой так что не пропускайте.
Предположим, вы сидите в ресторане и заказали что-то вроде чизбургера, но официант приносит другое блюдо, поэтому вы просто отказываетесь от этого блюда, потому что вы не заказывали его, и если вы заказали несколько блюд, а только одно или два. неправильно, поэтому вы говорите официанту, что этот конкретный элемент неверен, вот так мы можем сделать то же самое, используя 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».