Изучение валидаторов AdonisJS 5: подробное руководство

AdonisJS — это мощная веб-платформа Node.js, предоставляющая структурированную и масштабируемую среду для создания веб-приложений. Одной из его ключевых особенностей является встроенный механизм проверки, который позволяет разработчикам определять и обеспечивать соблюдение правил пользовательского ввода. В этой статье мы рассмотрим различные методы и приемы использования валидаторов в AdonisJS 5, а также приведем примеры кода.

  1. Базовая проверка:
    AdonisJS 5 предоставляет простой и интуитивно понятный синтаксис для определения правил проверки. Давайте рассмотрим пример, в котором мы хотим проверить форму регистрации пользователя с полями имени и адреса электронной почты.
import { schema, rules } from '@adonisjs/validator'
const validationSchema = schema.create({
  name: schema.string(),
  email: schema.string({}, [
    rules.email(),
    rules.unique({ table: 'users', column: 'email' }),
  ]),
})
const data = {
  name: 'John Doe',
  email: 'john.doe@example.com',
}
const validatedData = await schema.validate(data, validationSchema)

В приведенном выше фрагменте кода мы импортируем необходимые модули из пакета @adonisjs/validator. Затем мы определяем схему проверки с помощью метода schema.create(), указывая правила для каждого поля. Наконец, мы проверяем входные данные на соответствие схеме с помощью метода schema.validate().

  1. Пользовательские правила проверки:
    AdonisJS 5 позволяет вам определять собственные правила проверки в соответствии с конкретными требованиями вашего приложения. Давайте создадим собственное правило, которое проверяет, является ли данное значение действительным номером телефона.
import { rules } from '@adonisjs/validator'
rules.custom('phone', (value, _, { error }) => {
  if (!isValidPhoneNumber(value)) {
    throw error('Invalid phone number format')
  }
})

В приведенном выше примере мы определяем специальное правило под названием 'phone', используя метод rules.custom(). Функция правила получает значение поля, объект контекста и обработчик ошибок. Если номер телефона недействителен, мы выдаем ошибку с помощью функции error().

  1. Условная проверка:
    AdonisJS 5 позволяет выполнять условную проверку на основе определенных условий. Давайте рассмотрим сценарий, в котором мы хотим проверять поле пароля только в том случае, если пользователь выбирает определенный метод аутентификации.
import { schema, rules } from '@adonisjs/validator'
const validationSchema = schema.create({
  authMethod: schema.string(),
  password: schema.string.optional({}, [
    rules.when('authMethod', (authMethod) => authMethod === 'email', [
      rules.required(),
      rules.minLength(8),
    ]),
  ]),
})

В приведенном выше фрагменте кода мы используем метод rules.when()для условного применения правил проверки к полю passwordна основе значения authMethodполе.

  1. Очистка:
    AdonisJS 5 предоставляет мощные возможности очистки для очистки и нормализации входных данных. Давайте рассмотрим пример, в котором мы хотим очистить ввод пользователя, удалив все начальные и конечные пробелы.
import { sanitizations } from '@adonisjs/validator'
const data = {
  name: '  John Doe  ',
  email: 'john.doe@example.com',
}
const sanitizedData = await schema.sanitize(data, {
  name: sanitizations.trim(),
})

В приведенном выше фрагменте кода мы импортируем модуль sanitizationsиз @adonisjs/validator. Мы определяем правила очистки с помощью метода sanitizations.trim()и применяем их к полю nameс помощью метода schema.sanitize().

В этой статье мы рассмотрели различные методы и приемы использования валидаторов в AdonisJS 5. Мы рассмотрели базовую проверку, пользовательские правила проверки, условную проверку и очистку данных. Валидатор AdonisJS 5 предоставляет гибкое и надежное решение для обеспечения целостности и правильности ввода данных пользователем в ваших веб-приложениях.