2

我正在使用 node.js 中的一个非常简单的应用程序进行测试,我在其中创建并保存了一个应用程序。我使用 newPost 函数显示帖子表单,并在 savePost 方法中收到带有数据的帖子。在后一个中,我进行了验证(使用 iform 模块),我想再次显示与以前相同的页面,但使用用户发送的数据以及发现的错误填充表单。

我有一个类似的代码。如果我发现任何错误,我会在其中呈现相同的翡翠页面。尽管我想应用模式重定向并到达那里,但它可以工作,因为我不想在用户按 F5 时再次发送发布请求。

那么,如何进行发布重定向并从发布方法获取传递我收到的所有参数并添加错误的常用方法是什么?是否有任何模块可以帮助做到这一点?

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');
    }   
}
4

1 回答 1

3

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

于 2012-12-18T13:15:43.023 回答