ТЕХНИЧЕСКИЙ СТЕК — PostgreSQL, Express, Node.js

Существует множество способов проверить адрес электронной почты или пароль на этапе аутентификации. Тот, о котором я собираюсь упомянуть в этой статье, — через экспресс-валидатор. Элегантный «набор ПО промежуточного слоя для express.js, объединяющий функции валидатора и дезинфицирующего средства validator.js».

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

При этом установите пакет экспресс-валидатора.

npm i express-validator

После установки ниже приведены требования, которые необходимо инициализировать. Примечание. У меня есть модель пользователя, созданная в db/models/user, на которую я буду ссылаться, чтобы создать пользователя в моей базе данных.

const router = require('express').Router()
const { body, validationResult } = require('express-validator')
const User = require('../db/models/users')

Ниже приведен полный исходный код почтового маршрута с путем ‘/signup’. В этом примере я использовал два валидатора: isEmail() и isLength().

РАЗБИВКА

body('email').isEmail(), 
body('password').isLength({ min: 6 }),

Строки 8–9 проверяют запрос, отправляемый на почтовый маршрут, как входные данные «электронная почта» и «пароль». Для isEmail() аргумент не требуется. Напротив, я передаю минимальную длину, необходимую для «пароля», в качестве аргумента функции isLength(). При желании максимальная длина также может быть указана здесь как { max: YOUR INTEGER HERE }.

const errors = validationResult(req)

Строка 11 извлекает ошибку проверки из запроса и делает их доступными в виде объекта Result со следующими извлечениями:

Result { 
  errors: [ 
    {
      value: "user@email",  // input value for email field
      location: “body”,  // where this error was generated
      msg: “Invalid value”,  // error message
      param: “email"
    },
    {
      value: '',  // input value for password field
      location: 'body',  // where this error was generated 
      msg: 'Invalid value',  // error message
      param: 'password',
    } 
  ] 
}

С помощью вышеприведенного объекта мы теперь можем создавать условия if на основе параметра ошибки и отправлять ответы обратно клиенту соответственно, как указано в строках 14–21.

if (!errors.isEmpty() && errors.errors[0].param === 'email') {        return res.status(400).send('Invalid email address. Please try again.')}
if (!errors.isEmpty() && errors.errors[0].param === 'password') {        return res.status(400).send('Password must be longer than 6 characters.')}

После завершения проверки мы создаем пользователя на основе модели User в строке #22.

const user = await User.create(req.body)

Вот оно! Простая реализация экспресс-валидатора. Пул валидаторов, предоставляемых через экспресс-валидатор, огромен. Ссылка GitHub на валидаторы предоставлена ​​вам ниже.



Спасибо за чтение! Надеюсь, эта информация поможет.