【问题标题】:Using multiple router in express在 express 中使用多个路由器
【发布时间】:2018-08-30 23:04:08
【问题描述】:

我已将路由应用到我的应用程序中,如下所示:

var express = require('express');
var app = express();
var router = express.Router();

  //localhost:8080/api/story
router.get('/story', function(req, res){
    res.send('welcome to our story');
})

  //localhost:8080/api
app.use('/api', router); 

  //localhost:8080/user/02213
router.get('/user/:id', function(req , res){ 
  console.log(req.params.id);
});

localhost:8080/user/02213 目前不工作。我需要创建一个新的路由器吗?

【问题讨论】:

  • 你做错了,你应该做 localhost:8000/api/user/02213 因为这条路由附在路由器上
  • ...console.log( req.params.id ); ,使用 req.params 获取值

标签: node.js express


【解决方案1】:

是的,您需要创建一个新路由器,因为router 只会用于以/api 开头的请求:

//localhost:8080/api/story
router.get('/story', function(req, res){
  res.send('welcome to our story');
})

//localhost:8080/api
app.use('/api', router); 

//localhost:8080/user/02213
var anotherRouter = express.Router();
anotherRouter.get('/user/:id', function(req , res){ 
  console.log(req.params.id);
  res.end();
});
app.use('/', anotherRouter);

【讨论】:

  • 我明白了,将它们保存在自己的文件中会更好吗?
  • 是的,这样会更好。
  • 在那种情况下,它如何与mongodb通信(拉和推)?因为我在 server.js 文件中创建了一个模型。
  • @SahinErbay 这确实是一个完全不同的话题,但通常,模型也会在自己的单独文件中创建并导出到应用程序的其他部分。也许这个问题及其答案可能会有所帮助:stackoverflow.com/questions/22966854/…
【解决方案2】:

问题是id在请求中没有被识别,
你应该这样称呼它:req.params.id

【讨论】:

    猜你喜欢
    • 2017-04-14
    • 2013-03-01
    • 1970-01-01
    • 2015-09-03
    • 2012-02-10
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    相关资源
    最近更新 更多