我可能会错误地写错了这个问题......
我尝试使用Node.js,Express,MongoDB(mongoose)制作网址缩短器。
我已将其设置为当用户加载主页时,它们会被重定向到主页。
// horribly designed home page
app.get('/', function(req, res){
res.render('index');
res.end();
});
这部分有效。用户成功查看主页。
但是,我还有以下代码:
// redirects to corresponding url
app.get('/:digits', function(req, res){
console.log('getting full url from database');
}
每次用户导航到主页(/)时,也会触发此路径,并且我会看到“从数据库中获取完整网址”'在控制台中。
这是为什么?
答案 0 :(得分:0)
在路线参数:
上查看此部分http://expressjs.com/en/guide/routing.html 从官方文档:
此请求网址:
http://localhost:3000/users/34/books/8989
将路由到此路径:
/users/:userId/books/:bookId
并且req.params对象将是
{ "userId": "34", "bookId": "8989" }
在您的情况下:当我在Chrome中尝试时,我将req.params.digits作为'favicon.ico'。
这意味着浏览器会发出两个请求:
第二个请求是触发路由的原因。
您可以尝试添加console.log
代码,以查看您的浏览器发送的内容
app.get('/:digits', function(req, res){
console.log('getting full url from database');
console.log(req.params.digits);
});
您还可以使用“开发者选项”(Chrome),firebug(Firefox)进行验证。
答案 1 :(得分:0)
我正在查看您的代码,我认为您可能会遗漏一些事情。
您是否设置了'views'文件夹?通过使用res.render,express期望使用'ejs'视图引擎从'views'文件夹呈现'view'。
我发现在我的结构中明确定义的文件夹在路由方面没有问题。