ТЕХНИЧЕСКИЙ СТЕК — 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 на валидаторы предоставлена вам ниже.
Спасибо за чтение! Надеюсь, эта информация поможет.