validator/validator.js
const {body, sanitizeBody} = require('express-validator');//валидация работающая с express const User = require('../models/user');//Модель User /** * Название валидатора произвольное * @type {*[]} */ exports.registerValidators = [ body('email') .isEmail().withMessage('Введите корректный email')//ПРоверка email .custom(async (value, {req})=>{//Асинхронный валидатор, проверка на существование такого email в базе try{ const user = await User.findOne({//поиск пользователя email: value }); if(user){ return Promise.reject('Такой email уже существует');//возврощаем промис чтоб остальные методы ждали его выполнение } }catch(e){ console.log(e); } }) .normalizeEmail(),//нормализовать email (привести к нижнему регистру и т. д.) body('password','минимум 6 символов') .isLength({min: 6, max: 56}) .isAlphanumeric().withMessage('Только цифры и латинские буквы') .trim(),//Убрать пробелы body('confirm').custom((valuem, {req}) => {//Кастомный валидатор if(valuem !== req.body.password){//Проверяем совподают ли значения при подтверждении пароля throw new Error('Пароль должен совпадать'); } return true }) .trim(),//Убрать пробелы body('name').isLength({min: 3}).withMessage('Минимум три символа').trim()//Имя пользователя ];