Оглавление:
Карта сайта:
Оглавление:
Карта сайта:
const {Router} = require('express'); //или const express.Router = require('express'); const Course = require('../models/course');//модель для вывода списков курсов const auth = require('../middleware/auth'); const router = Router();//инициализируем роутер /** *страница courses /courses/c44e2956-48f4-49f5-b0f9-916e1efb709f/edit * первый параметр адрес страницы,с динамическим параметром id * второй параметр callback - обработчик запроса req - request , запрос от браузера * res - response, ответ сервера */ router.get('/:id/edit', auth,async (req, res) => { if(!req.query.allow){//если allow != true, делаем редирект на главную страницу return res.redirect('/'); } const course = await Course.findById(req.params.id);//Получить данные курса if(course.userId._id.toString() !== req.user._id.toString()){//Сравниваем id пользователей, // если не совподают редирект на страницу курсов return res.redirect('/courses'); } //res.status(200);//вернуть статус ответа res.render('edit',{ layout: 'empty',//- новый шаблон вместо main.hbs, template/layouts/empty.hbs course: course //ОБъект с данными по курсу });//рендерим используя шаблонизатор }); /** * страница courses /courses/edit * первый параметр адрес страницы * второй параметр callback - обработчик запроса req - request , запрос от браузера * res - response, ответ сервера */ router.post('/edit', async (req, res) => { const course = await Course.findById(req.body.id);//Получить данные курса if(course.userId._id.toString() !== req.user._id.toString()){//Сравниваем id пользователей, // если не совподают редирект на страницу курсов return res.redirect('/courses'); } Object.assign(course, req.body);//Обновить объект данных по курсу, метод js-ный (слияние объектов) await course.save();//сохранить //await Course.findByIdAndUpdate(req.body.id ,req.body);//Обновить данные курса res.redirect('/courses/'+req.body.id);//страница courses /courses/c44e2956-48f4-49f5-b0f9-916e1efb709f }); /** * Удалить курс * первый параметр адрес страницы * второй параметр callback - обработчик запроса req - request , запрос от браузера * res - response, ответ сервера */ router.post('/remove', async (req, res) => { await Course.deleteOne({ _id: req.body.id, userId: req.user._id//Удалить может только пользователь создавший курс });//Удалить позицию res.redirect('/courses');//страница курсов /courses }); module.exports = router;//Экспортирум роутер