为什么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给孩子。
- ExpressJS AngularJS POST
- 未使用callback时未定义的结果。 Nodejs,Express和SQL Server Express
- 从express中的静态文件中排除子目录
- 我想在点击一个button时在node.js服务器上触发一次server-sent-event
- 在Express JS for Ajax中设置REST路由只能与Backbone一起使用
- 使用Socket.io的简单Node.js应用程序无法加载客户端JavaScript
- 如何检查当前密码和(如果正确)使用Passport.js本地策略更新密码
- 如何区分expressjs中的两个POST调用?
- 为什么我会连接错误尝试连接到mongo