From 5ed4787e33e258cc9afa7e9d2886a0b590d69715 Mon Sep 17 00:00:00 2001 From: Mateja Date: Sun, 9 May 2021 14:41:41 +0200 Subject: Returning validation errors and old values to `post` form. Made custom middleware for that purpose. --- controllers/post.js | 2 +- index.js | 4 ++++ utils/middleware/oldForm.js | 23 +++++++++++++++++++++++ views/new-post.handlebars | 6 +++++- 4 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 utils/middleware/oldForm.js diff --git a/controllers/post.js b/controllers/post.js index 45da525..30d0002 100644 --- a/controllers/post.js +++ b/controllers/post.js @@ -30,7 +30,7 @@ module.exports = { newPost.save() .then(() => res.redirect('/')) .catch(err => { - console.log(err); + req.setOldForm(err); res.redirect('/new-post'); }); }, diff --git a/index.js b/index.js index 743a85e..d2e486e 100644 --- a/index.js +++ b/index.js @@ -7,6 +7,8 @@ const flash = require('connect-flash'); const passport = require('passport'); require('dotenv').config(); +const oldForm = require('./utils/middleware/oldForm'); + const webRoutes = require('./routes/web'); const app = express(); @@ -42,6 +44,8 @@ require('./config/passport'); app.use(passport.initialize()); app.use(passport.session()); +app.use(oldForm); + app.use('/', webRoutes); app.listen(process.env.PORT, () => console.log(`Server started on port ${process.env.PORT}.`)); diff --git a/utils/middleware/oldForm.js b/utils/middleware/oldForm.js new file mode 100644 index 0000000..7bcfb34 --- /dev/null +++ b/utils/middleware/oldForm.js @@ -0,0 +1,23 @@ +module.exports = (req, res, next) => { + + req.setOldForm = (errors) => { + let prettyErrors = {}; + Object.keys(errors.errors).forEach(err => { + prettyErrors[err] = errors.errors[err].message; + }); + + req.session.oldForm = { + errors: prettyErrors, + values: req.body + }; + }; + + if (!req.session.oldForm) req.session.oldForm = { + errors: null, + values: null + }; + + res.locals.oldForm = req.session.oldForm; + delete req.session.oldForm; + next(); +}; diff --git a/views/new-post.handlebars b/views/new-post.handlebars index 9e42ba9..2038326 100644 --- a/views/new-post.handlebars +++ b/views/new-post.handlebars @@ -3,11 +3,15 @@
- +
+ {{#if oldForm.errors.text}} +
{{oldForm.errors.text}}
+ {{/if}}
-- cgit v1.2.3