=====валидация курсов===== **routes/add.js** const {Router} = require('express'); //или const express.Router = require('express'); const Course = require('../models/course'); const auth = require('../middleware/auth');//модуль middleware , для защиты ройтов const {validationResult} = require('express-validator');//валидация работающая с express const {courseValidators} = require('../validator/validator');//middleware - мой валидатор на основе express-validator const router = Router(); /** * страница add * Обработка POST запроса * @params '/' адрес страницы, в данном случае используется префикс при регистрации ройтера, * там страничка зарегестрирована как /add * @params auth - зашит роута * @params courseValidators - валидатор * четвертый параметр асинхронный callback - обработчик запроса req - request , запрос от браузера * res - response, ответ сервера */ router.post('/', auth, courseValidators,async (req, res) => {//асинхронная функция const error = validationResult(req);//получить результирующую ошибку если она есть if(!error.isEmpty()){//если ошибка присутствует return res.status(422).render('add', { title:'Добавить курс',//прокидываем параметры в шаблон isAdd: true, error: error.array()[0].msg, data:{//подстановка веденных данных после ошибки, что бы не заполнять форму повторно title: req.body.title, price: req.body.price, img: req.body.img } });//рендерим используя шаблонизатор // , 422 -код ошибки валидации } //res.end(JSON.stringify(req.body));//Распечать POST на страничке try{ const course = new Course({//модель для добавления новых курсов title: req.body.title,//Поля для записи в БД price: req.body.price, img: req.body.img, userId: req.user._id//Связка с таблице User }); await course.save();//сохранить запись res.redirect('/courses');//Редирект на страницу с курсами }catch(e){ console.log(e); } }); module.exports = router;//Экспортирум роутер **validator/validator.js** const {body, sanitizeBody} = require('express-validator');//валидация работающая с express /** * Название валидатора произвольное, форма добавление нового курса * @type {*[]} */ exports.courseValidators = [ body('title').isLength({min:3}).withMessage('Минимальная длина названия 3 символа').trim(), body('price').isNumeric().withMessage('Введите корректную цену'), body('img', 'введите корректно url').isURL() ]; **template/add.hbs**

Добавить курс

{{#if error}}

{{error}}

{{/if}}