我尝试将一些请求转发给另一个处理程序:
route.get("/tag/:id",function(req,res,next){
req.url="/posts?tag_id="+req.params.id
next('route')
})
route.get("/posts",function(req,res,next){
console.info(req.query);
})
query
在第二个处理程序中为空。
如何解决这个问题?
答案 0 :(得分:3)
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
和other request properties。