2014-08-31 300 views
1

我有一个简单的评论应用程序,它使用户能够通过表单向系统输入评论,然后这些评论被登录到页面底部的列表中。为什么req.params返回'undefined'?

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

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

而且还修改了我的主要Show.js航线使用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; 

然而,所有我找回在我的终端的undefined消息。

如果我将console.log()直接放在我的app.js中,我将按照预期记录该ID。

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

我是否在我的路线中缺少某些东西,导致我无法获取id参数?

+0

'router.get('/:id',function(req,res){'??? – Vinz243 2014-08-31 09:50:09

回答

1

您需要在获取路线指定: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); 
}); 
+0

@ Keva161对此有何帮助? – 2014-09-15 18:19:37

+0

嗨, 假设“/ mobile/custom/******/deviceVersion /:deviceType“是我的要求。 请问如何检查”deviceType“是否对undefined? – 2017-01-27 07:26:26

1

你需要传递{mergeParams:真正}在路由器页面

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

这呼唤你的路由器时,会将父参数传递给孩子。

+0

嗨, 假设”/ mobile/custom/******/deviceVersion /:deviceType“是我的请求。 可否请你告诉我如何检查“deviceType”对未定义? – 2017-01-27 07:26:26