Javascript Express.JS处理服务器端错误
我正在Node.JS上使用Express.JS构建一个应用程序。我正在设置路由,并尽我所能维护一个RESTful架构 接受表单输入,遇到某种错误(不一定是验证错误),然后向用户显示相同的表单,但首先包括他们发送到服务器的数据的过程是什么 起初,我将POST数据存储到一个会话中,但这从来都不是一个好的解决方案,更像是一次黑客攻击 然后我调整了我的路线,改为使用Javascript Express.JS处理服务器端错误,javascript,rest,node.js,express,Javascript,Rest,Node.js,Express,我正在Node.JS上使用Express.JS构建一个应用程序。我正在设置路由,并尽我所能维护一个RESTful架构 接受表单输入,遇到某种错误(不一定是验证错误),然后向用户显示相同的表单,但首先包括他们发送到服务器的数据的过程是什么 起初,我将POST数据存储到一个会话中,但这从来都不是一个好的解决方案,更像是一次黑客攻击 然后我调整了我的路线,改为使用app.post | put | del()来处理表单提交,然后使用带有app.all()的路线作为“一网打尽”。基本上,如果我遇到错误,我
app.post | put | del()
来处理表单提交,然后使用带有app.all()
的路线作为“一网打尽”。基本上,如果我遇到错误,我会调用next()
,将控制权处理回我的“一网打尽”路线。这最终导致我偏离了我最初的宁静方式
现在,我已经设置了更准确地反映RESTful方法的路线。但是,如果我使用app.redirect()
,数据将在重定向中丢失。我最终使用了另一个感觉像黑客的东西:controller.new\u form.apply(这是参数)代码>(这在控制器.create()中调用)
当然,我可以使用客户端验证,但我正在尽最大努力创建一个完全在服务器端工作的应用程序,然后添加客户端代码,以改善受支持的用户体验
express.js(或connect.js)是否有某种方法可用于在不同于表单本身的URI上接受表单操作,但允许我返回,而无需实际重定向浏览器,以便表单可以继续填充(以及显示错误消息)?您可以从其他视图调用视图,只需传入req和res
例如:
exports.index = function(req, res) {
res.render('index');
};
exports.verify = function(req, res) {
res.local('flash', 'Set a template local variable');
exports.index(req, res);
};
在这里,我在一个视图中设置模板本地,然后调用另一个视图来实际处理响应。您可以在post处理程序中调用get处理程序。您是否可以根据成功或失败的不同使用不同的模板调用res.render
?因此,如果所有发布的表单数据都有效,请继续执行res.render'thankyou.jade'
否则是否再次执行res.render'form.jade'
?这与kcbanner的建议类似,只是没有为每个方法定义不同的方法,不过如果你有任何特殊的逻辑,这是一件很好的事情。你可以尝试caolan的表单模块,该模块旨在简化表单。它应该允许您再次简单地调用form.toHTML()。此外,请停下来询问问题,以获得更快的响应:)