我正在尝试捕获表单提交时表单输入中的值,当发生错误然后在错误重定向后传递到相同的输入字段。为实现这一点,我在POST路由的res.locals.errorFormValue
部分设置了req.body
到catch()
,但在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>