类似thisexpressjs不及格req.params通过中间件
我有以下途径:
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
不工作?
你能发布相关的代码中间件?我没有在您发布的代码片段中看到任何明显的错误。可能与'middleware.loginCheck'的'req.params.link'中的拼写错误一样简单。另外,您是否在请求中的多个位置传递了一个名为“link”的参数,例如查询字符串或请求正文?如果是这样,可以将数据返回到'req.params('link')'而不是'req.params.link'中,因为'req.params'只是URL /路由参数,而'req.param('link ')'检查URL参数,然后检查正文,然后查询字符串。 –
在'middleware.loginCheck'中没有'req.params.link'的引用。我唯一一次称'req.params.link'在'blog.postBlogs'中。我只需要'req.params.link'就可以通过。我不认为我传递了一个名为'link'的参数。有一个''name_of_post'是'req.params.link'。所以当用户点击那个锚点标签时,它会显示在URL中,那么应该弹出'req.params.link'? – user1460015
@PeterLyons检查update_2 – user1460015