2013-12-23 32 views
0

我想要一箇中間件,將在err和non錯誤鏈內建立一個變量。這怎麼可能?傳遞ERR在回調自動使得它跳過中間件的正常鏈條,反之亦然,如果刪除犯錯它跳過中間件的ERR鏈...Middlware由錯誤和正常鏈共享

middleware.redirect = function(){ 
    return function (err, req, res, next){ 
     if(req.form.redirect){ 
      req.form_redirect = url.parse(req.form.redirect); 
     }else{ 
      req.form_redirect = url.parse(config.domain); 
      req.form_redirect.pathname = "thanks"; 
     } 
     if(err) return next(err); 
     return next(); 
    } 
} 
+0

您的後續中間件可能會根據錯誤值區分請求之間的中間件(或者採取行動或拒絕或將其傳遞給下一個請求)。這是標準的行爲。除此之外,你還想要什麼?並行錯誤和正常鏈不是你應該如何設計它們的。中間件的功能必須是平行的。每個處理由last處理的錯誤或請求。 – user568109

+0

@ user568109是的,但它們都在鏈中共享這個變量,而DRY是本質的...... – ThomasReggi

回答

0

錯誤中間件,一個用簽名(err, req, res, next)應該是您的路線的最終目的地。如果要添加到req對象,則需要在調用errornext(new Error())之前完成此操作。