req.query
пуст, потому что вы устанавливаете URL-адрес вручную, и он снова не разбирается.
Это второй обработчик вызывается, но только 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.
Зачем вам это нужно? Первая альтернатива, используйте 'res.redirect()', второй, чтобы написать логику еще где и использовать ее в маршрутизаторах. –
@MukeshSharma Exatcly. Перенаправление имеет больше смысла в этих случаях. – undefined
Подумайте о ссылке permalink в wordpress, вы не можете перенаправить '/ tag/x' в' index.php? Tag_name = x' – hguser