触发了错误的快速路线?

时间:2016-12-17 01:37:35

标签: javascript node.js routes

我可能会错误地写错了这个问题......

我尝试使用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');
}

每次用户导航到主页(/)时,也会触发此路径,并且我会看到“从数据库中获取完整网址”'在控制台中。

这是为什么?

Full code is here

2 个答案:

答案 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'。

这意味着浏览器会发出两个请求:

  1. 到'/'路径
  2. 到'/favicon.ico'
  3. 第二个请求是触发路由的原因。

    您可以尝试添加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'。

我发现在我的结构中明确定义的文件夹在路由方面没有问题。