【发布时间】:2012-11-15 20:24:30
【问题描述】:
类似于this
我有以下路线:app.get('/blogpost/:link', middleware.loginCheck, blog.postBlogs);
使用req.params.link 返回链接参数。
当我在middleware.loginCheck 中询问req.params.link 时,我收到了undefined。
似乎req.params.link 没有被传递到中间件,因为我可以像这样访问它:app.get('/blogpost/:link', function(req, res){console.log(req.params.link)});
我的中间件有什么问题?
最终版a(href='/post/#{post.link}') #{comments} 呈现/post/myPostLink
{#post.link} 仅渲染变量替换,不会添加额外的/a(href='/post#{post.link}') #{comments} renders '/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_1req.param('link') 适用于这种情况。
中间件没有问题。
但是为什么req.params.link 不起作用呢?
【问题讨论】:
-
你能贴出你的中间件的相关代码吗?我在您发布的代码 sn-ps 中没有看到任何明显的错误。可能就像
req.params.link中的middleware.loginCheck中的拼写错误一样简单。此外,您是否在请求中的多个位置传递了一个名为“链接”的参数,例如查询字符串或请求正文?如果是这样,则可以在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一直通过。我不认为我正在传递一个名为“链接”的参数。有一个<a href="/post/name_of_post">,其中name_of_post是req.params.link。因此,当用户单击该锚标记时,它会显示在 URL 中,那么req.params.link应该会弹出吗?
标签: express middleware