Простая валидация на Javascript

Раньше мы делали валидацию, создавая собственную логику и некоторые дополнительные функции, если пользователь null или пуст, выкидывалась ошибка, то же самое для email, пароля и т.д. В сегодняшней статье мы узнаем о классном пакете, который делает все за нас, нам нужно только создать схему, это сэкономит кучу времени и ускорит процесс разработки. правда круто? да.

Давайте сделаем это, сначала мы установим Joi:

# Yarn
$ yarn add joi

# NPM
$ npm install joi

Войти в полноэкранный режим Выход из полноэкранного режима

Теперь давайте создадим нашу первую схему:

const Joi = require("joi");

const schema = Joi.object({
   username: Joi.string().alphanum().min(3).max(8).required()
})

Войти в полноэкранный режим Выйти из полноэкранного режима

Имя пользователя: мы хотим, чтобы имя пользователя было проверено.

  • Joi.string(): это должна быть строка и alphanum()[a-zA-Z0-9]
  • должно быть минимум 6 и максимум 8 символов
  • и эти поля обязательны для заполнения

Теперь давайте протестируем это:

const userData = {
  username: 'ericgit'
}
const isValid = schema.validate(userData)
console.log(isValid) // Output: { value: { username: 'ericgit' } }
Войдите в полноэкранный режим Выйдите из полноэкранного режима

если возникнет какая-либо ошибка, будет выдана ошибка с соответствующим сообщением.

Давайте выполним реальный пример:

const Joi = require("joi");

const schema = Joi.object({
  username: Joi.string().alphanum().min(3).max(8).required(),
  email: Joi.string().email({ minDomainSegments: 2, tlds: false }),
  phone: Joi.string().length(10).pattern(new RegExp('/^[0-9]+$/')),
  birth_day: Joi.date(),
  password: Joi.string().pattern(new RegExp("^[a-zA-Z0-9]{3,30}$")),
  repeat_password: Joi.ref('password'),
  access_token: [Joi.string(), Joi.number()]
}).with('username', 'birth_day')
    .xor('password', 'access_token')
    .with('password', 'repeat_password');



// Validating data
const isValid = schema.validate({
    username: "ericgit",
    birth_day: '01/01/1999',
})
Войти в полноэкранный режим Выход из полноэкранного режима

Пример 2:

const isValid =  schema.validate({
    username: "ericgit",
    birth_day: '01/01/1999',
    password: 'test12',
    repeat_password: 'test12',
    email: 'hi@ericgit.me'
});
Вход в полноэкранный режим Выход из полноэкранного режима

Вы также можете сделать это в try-catch:

try {
    const isValid = await schema.validateAsync({
        username: "ericgit",
        birth_day: '01/01/1999',
        password: 'test12',
        repeat_password: 'test12',
        email: 'hi@ericgit.me'
    });
} catch (error) {
    console.log(error)
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Заключительное слово

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

Я надеюсь, что вы найдете его полезным и спасибо, что прочитали его.
Оставайтесь благословенными && Оставайтесь в безопасности, счастливого кодинга.

Оцените статью
Procodings.ru
Добавить комментарий