[英]Passing error message to template through redirect in Express/Node.js
在我的 Node.js 应用程序中,我有一个 function(由 Express 路由),它向用户显示了一个表单:
app.get('/register', function (req, res) {
res.render('form');
});
我还有另一个 function,路由到同一个 URL,但它处理 POST 请求,它接收前一个表单提交的数据。 如果表单未通过验证,它将用户重定向回表单; 否则,它会做应该做的事情:
app.post('/register', function (req, res) {
if (validate(req.registerForm)) return res.redirect('back');
persistStuff(req.registerForm, function (err, data) {
// Do error verification etc.
res.redirect('back')
});
});
我想要做的是在以下行中发送一条要显示的错误消息:
if (validate(req.registerForm)) return res.redirect('back');
写类似的东西
if (validate(req.registerForm)) return res.render('form', {msg:'invalid'});
是不可接受的,因为我想遵循 POST-REDIRECT-GET 模式。 我可以做类似的事情
if (validate(req.registerForm)) return res.redirect('/register?msg=invalid');
但它会在我的代码中硬编码一个 URL ,我宁愿避免它。 还有另一种方法吗?
您可以简单地将其重定向为res.redirect('..?error=1')
这? 标签告诉浏览器它是一组可选参数,而.. 只是一个路径名相对调用(如在终端上调用 cd.. 以移回一个目录),您的浏览器将使用该标签定向到相应的页面最后: http://.....?error=1
然后您可以通过执行以下操作简单地在相应页面上拉出错误:
if (req.param("error" == 1)) { // do stuff bassed off that error match };
您可以硬编码几个不同的错误值,并根据发生的错误做出适当的响应
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.