2012-12-08 54 views
0

我正在使用node.js中的一個非常簡單的應用程序進行測試,在該應用程序中創建並保存應用程序。我使用newPost函數顯示帖子表單,並使用savePost方法中的數據接收帖子。在後者中,我做了一個驗證(使用iform模塊),我想再次顯示與之前相同的頁面,但是填寫了用戶發送的數據以及發現的錯誤。如何應用post重定向並獲取node.js中的模式?

我有一個類似這樣的代碼。如果我發現任何錯誤,我會渲染相同的玉頁。它可以工作,但我想應用模式重定向併到達那裏,因爲我不想在用戶按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

支票快遞驗證器 – chovy

+0

@chovy我想要一個答案不依賴於一個特殊的模塊。例如,我也想應用Post-redirect-get而無需驗證。 – Juanillo

+0

我相信PRG只適用於成功的表單提交。當發生驗證錯誤時,您可以呈現頁面。 –

回答

2

您可以重定向到GET「/ newPost」而不是渲染「newPost」模板。 要使自動完成工作,您可以將數據添加到重定向查詢(更快)並呈現它,或將數據添加到會話中(不要忘記在呈現後將其刪除),但更高版本選項需要會話存儲。

相關問題