【发布时间】:2021-01-10 16:07:12
【问题描述】:
如何在 express.js 中获取 only 页面路径?
我想基于 url 呈现页面。就像我尝试访问 http://example.com/a_lion包含在对象中找到的数据的文件。如果没有,它将呈现带有“未找到”数据的同一页面。
这是我的index.js文件代码sn-p:
app.get("*",(req,res) => {
if(req.url == "/"){
res.render("index",{title:"Recent Stories"});
}else{
console.log(req.path);
fs.readFile("stories.json",(err,data) => {
if(err){throw err}
else{
let actualData = JSON.parse(data.toString());
let mainData = actualData.find((e) => {
return e.title === req.url;
})
if(mainData == undefined){
res.render("stories",{title:"Ops,",body:"Not found!"});
}else{
res.render("stories",{title:mainData.title,body:mainData.body})
}
}
});
}
})
在console.log(req.path); 行中,它会输出一些这样的网址:
/a_lion
/favicon.ico
我只想要/a_lion 行而不是其他行,这样我的代码就可以在数组中搜索它。我怎样才能做到这一点?
【问题讨论】:
-
您要求处理
*的所有请求。如果您不想处理某些(如网站图标或其他资产),请在您现在拥有的处理程序中有条件地检查它们,或者添加更早的静态处理程序来为它们提供服务。 -
您会得到两条日志行,因为您处理了两个请求。这些不是从单个
req.path打印出来的。 -
您应该考虑使用比
"*"更好的路径。例如,如果您使用/story/:name并链接到/story/a_lion,那么req.params.name将是a_lion。 -
@Chris G hmmm,是的,我应该这样做。
标签: javascript node.js express url