req.query
是空的,因爲您手動設置了網址並且它不會再被解析。
它的第二個處理程序被調用,但只有req.query
沒有設置,然後代替:
route.get("/tag/:id", function (req, res, next) {
req.url = "/posts?tag_id=" + req.params.id;
next('route');
});
你可以試試:
route.get("/tag/:id", function (req, res, next) {
req.url = "/posts?tag_id=" + req.params.id;
req.query = {tag_id: req.params.id}; // or whatever you want
next('route');
});
或:
route.get("/tag/:id", function (req, res, next) {
req.url = "/posts?tag_id=" + req.params.id;
req.query = url.parse(req.url, true).query;
next('route');
});
如果它在你的處理程序中使用,那麼你可能還需要更新req.params
,req.path
a nd other request properties。
來源
2016-11-17 08:40:28
rsp
你爲什麼要那樣?第一種方法,使用'res.redirect()',其次將邏輯寫入其中並在路由器中使用它。 –
@MukeshSharma Exatcly。在這些情況下,重定向更有意義。 – undefined
想想wordpress中的永久鏈接,你不能將'/ tag/x'重定向到'index.php?tag_name = x' – hguser