从主页上取一个参数,不会打破路线

时间:2014-06-28 01:31:29

标签: node.js express

我们说我有myWebsite.com和myWebsite.com/login

我有索引页面的路由和登录页面的路由。

我现在正在开发另一项功能,它将带有一个id,例如myWebsite.com/t9wfhash

如果有这样的id,我会用DB查询数据库。

我试过像

这样的东西
/* GET index page. */
router.get('/:urlId', function (req, res) {

  if ( req.params.urlId !== 'undefined' ) {
    console.log(req.params.urlId);
    var urlId = req.params.urlId;
  }

  if (req.isAuthenticated()) {
    res.redirect('/dashboard');
  }
  res.render('index', { title: urlId });
});

然而,当从索引页面(:urlId)获取id时,登录页面不再起作用 - 如果我转到我的登录页面,它只是控制台日志" login",of当然。

那么如果有人进入我的某条路线(IE登录页面),我怎么能这样做,那么它就不会被视为ID了。

任何想法都赞赏。

1 个答案:

答案 0 :(得分:3)

只要您在urlId路由之前注册登录路由,/login的请求将触发您的登录路由而不是urlId路由:

var express = require('express');
var app = express();

app.get('/', function(req, res){
  res.send('hello world');
});

app.get('/login', function(req, res){
  res.send('this is the login page');
});

app.get('/:urlId', function(req, res){
  res.send( req.params.urlId );
});

app.listen(3005);

// http://localhost:3005/login will return "this is the login page"
// http://localhost:3005/22 will return 22