Expressjs在错误

时间:2017-03-22 00:29:01

标签: express error-handling body-parser

我正在尝试捕获表单提交时表单输入中的值,当发生错误然后在错误重定向后传递到相同的输入字段。为实现这一点,我在POST路由的res.locals.errorFormValue部分设置了req.bodycatch(),但在console.log(res.locals) GET路由时我没有看到任何值。我将价值保存在正确的位置吗?有没有更好的方法来保存POST上的输入字段值,并在渲染视图中使用错误?

这是我的POST路线:

.post(function(req, res){

            models.Post.create({
                title: req.body.title,
                discovery: req.body.discovery,
                userId: req.user.userId     
            }).then(function(){
                req.flash('info', 'Post was successfully created.');
                res.redirect('/app');
            }).catch(function(err){
                console.log(err)

                console.log(req.body);

                res.locals.errorFormValue = req.body;

                var errMessage = [];

                var errStatusArray = err.errors;
                console.log(errStatusArray);

                //Push message value in objects to array
                for(var prop in errStatusArray){
                    errMessage.push(errStatusArray[prop].message);
                }

                errMessage = errMessage.join(" ")

                req.flash('error', errMessage);
                res.redirect(req.get('referer'));
            });
        });
    });

这是GET:

.get(function(req, res){
        models.DiscoverySource.findAll({
            where: {
                organizationId: req.user.organizationId
            }
        }).then(function(category){
                console.log(res.locals);
                res.render('pages/app/post-create.hbs',{
                    category: category,
                    errorMessage: req.flash('error'),
                    csrfToken: req.csrfToken()
                });
            });
        });
    })

查看访问本地变量的模板:

<p>{{errorFormValue.title}}</p>
<p>{{errorFormValue.discovery}}</p>

0 个答案:

没有答案