[英]Passing error message to template through redirect in Express/Node.js
在我的 Node.js 應用程序中,我有一個 function(由 Express 路由),它向用戶顯示了一個表單:
app.get('/register', function (req, res) {
res.render('form');
});
我還有另一個 function,路由到同一個 URL,但它處理 POST 請求,它接收前一個表單提交的數據。 如果表單未通過驗證,它將用戶重定向回表單; 否則,它會做應該做的事情:
app.post('/register', function (req, res) {
if (validate(req.registerForm)) return res.redirect('back');
persistStuff(req.registerForm, function (err, data) {
// Do error verification etc.
res.redirect('back')
});
});
我想要做的是在以下行中發送一條要顯示的錯誤消息:
if (validate(req.registerForm)) return res.redirect('back');
寫類似的東西
if (validate(req.registerForm)) return res.render('form', {msg:'invalid'});
是不可接受的,因為我想遵循 POST-REDIRECT-GET 模式。 我可以做類似的事情
if (validate(req.registerForm)) return res.redirect('/register?msg=invalid');
但它會在我的代碼中硬編碼一個 URL ,我寧願避免它。 還有另一種方法嗎?
您可以簡單地將其重定向為res.redirect('..?error=1')
這? 標簽告訴瀏覽器它是一組可選參數,而.. 只是一個路徑名相對調用(如在終端上調用 cd.. 以移回一個目錄),您的瀏覽器將使用該標簽定向到相應的頁面最后: http://.....?error=1
然后您可以通過執行以下操作簡單地在相應頁面上拉出錯誤:
if (req.param("error" == 1)) { // do stuff bassed off that error match };
您可以硬編碼幾個不同的錯誤值,並根據發生的錯誤做出適當的響應
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.