如何在node.js中应用post重定向和获取模式?

时间:2012-12-08 00:28:36

标签: node.js express pug post-redirect-get

我正在使用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');
    }   
}

1 个答案:

答案 0 :(得分:2)

您可以重定向到GET“/ newPost”,而不是渲染“newPost”模板。 要使自动完成工作,您可以将数据添加到重定向查询(更快)并呈现它,或将数据添加到会话中(不要忘记在渲染后删除它),但后面的选项需要会话存储。