为什么req.params返回'undefined'?

我有一个简单的评论应用程序,使用户可以通过表单向系统input评论,然后login到页面底部的列表中。

我想对其进行修改,以便用户在创build评论标题后可以点击它,并加载与该评论相关的关联内容。

我已经在app.js中修改了我的路线来查找:id

并且还修改了我的主要Show.jspath以使用id作为findOne命令中的参数来查找评论。

我还放了一个console.log()命令来注销req.params.id

 var express = require('express'); var router = express.Router(); var mongoose = require('mongoose'); var Comment = mongoose.model('Comment', Comment); router.get('/', function(req, res) { Comment.findOne({ id: req.params.id }, function(err, comment){ console.log(req.params.id) }); }); module.exports = router; 

但是,我所得到的只是我terminal中一个undefined消息。

如果我把console.log()直接放在我的app.js中,我会得到预期的id。

 app.use('/:id', function(req,res) { console.log(req.params.id) }); 

我在我的路线中错过了一些东西,阻止我得到ID参数?

你需要在你的get route中指定:id ,像这样:

 // GET /1 -> print 1 router.get('/:id', function(req, res) { console.log(req.params.id); }); // GET /foo/1/bar/2 -> print 1, print 2 router.get('/foo/:id1/bar/:id2', function(req, res) { console.log(req.params.id1); console.log(req.params.id2); }); 

在路由器页面中调用路由器时,您需要传递{mergeParams:true}

  var router = express.router({mergeParams: true}) 

这会将父parameter passing给孩子。