与this类似
我有以下路线:
app.get('/blogpost/:link', middleware.loginCheck, blog.postBlogs);
使用req.params.link
返回链接参数
当我在req.params.link
中要求middleware.loginCheck
时,我收到undefined
。
似乎req.params.link
没有被传递到中间件,因为我可以像这样访问它:
app.get('/blogpost/:link', function(req, res){console.log(req.params.link)});
我的中间件问题是什么?
FINAL
a(href='/post/#{post.link}') #{comments}
呈现/post/myPostLink
{#post.link}
仅渲染变量替换,并且不会添加额外的/
a(href='/post#{post.link}') #{comments}
呈现'/ postmyPostLink'
a(href='/post/' + post.link) #{comments}
呈现/post/myPostLink
因此,#{post.link}
或post.link
的工作方式相同,而req.params.link
同时适用于两个来电。
UPDATE_2
我正在使用jade
来呈现网页。在里面我有一个锚标记,如下所示:a(href='/post/#{post.link}) #{comments}
achor标签工作正常,并将我引导到正确的页面。但express
不喜欢这种表述。相反,如果我将锚标记更改为a(href='/post/' + post.link) #{comments}
req.params.link
,则可以正常工作。
UPDATE_1
req.param('link')
适用于此案例
中间件没有问题
但为什么req.params.link
不起作用?
答案 0 :(得分:2)
好的,我们在评论中来回了一下,但现在我的猜测是你的网址中的问题是双斜线
a(href='/post/#{post.link}') #{comments}
那是A)错过了一个结束语,但我认为这是你问题中的一个错字,而不是你的代码。和B)真正的问题是post.link
包含一个前导斜杠,所以你最终得到这个HTML:
<a href='/post//post_link_name'>42</a>
因此express将其解析为空:link
参数。将你的玉改为:
a(href='/post#{post.link}') #{comments}
你应该重新开始营业。
答案 1 :(得分:0)
在 express 的最新版本中,您可以使用router.param()
作为中间件来专门处理req.params
:
var router = express.Router();
router.param( "nickname", function (req, res, next, nickname) {
console.log( "nickname: ", nickname );
next();
});
router.get( "/user/:nickname", myController.method );
答案 2 :(得分:-1)
middleware.loginCheck
的签名是什么样的?它需要返回function(req, res, next)