我正在使用node.js中的一个非常简单的应用程序进行测试,我在其中创建并保存应用程序。我使用newPost函数显示post表单,并在savePost方法中收到包含数据的帖子。在后者我做了一个验证(使用iform模块),我想再次显示与之前相同的页面,但填写表单中包含用户发送的数据以及发现的错误。
我有类似这样的代码。在其中,如果我发现任何错误,我会渲染相同的玉页。虽然我想应用模式重定向并且到达那里,但是当用户按下F5时我不想再发送帖子请求。
那么,通常的方法是如何进行帖子重定向并从post方法中获取所有我收到的参数并添加错误?是否有任何模块可以帮助这样做?
var prepareObject = function(req, res){
var errors = {};
if('iform' in req){
errors = req.iform.errors;
}
return {title: 'Nuevo Post', body:req.body, errors: errors};
};
// mapped as /newPost (type GET)
exports.newPost = function(req, res){
//show form to create post
res.render('newPost', prepareObject(req, res));
}
// mapped as /savePost (type POST)
exports.savePost = function(req, res){
if(req.iform.errors) {
//there are errors: show form again to correct errors
res.render('newPost', prepareObject(req, res));
}else{
//no errors: show posts
res.redirect('/posts');
}
}
答案 0 :(得分:2)
您可以重定向到GET“/ newPost”,而不是渲染“newPost”模板。 要使自动完成工作,您可以将数据添加到重定向查询(更快)并呈现它,或将数据添加到会话中(不要忘记在渲染后删除它),但后面的选项需要会话存储。