为什么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给孩子。