2014-08-31 240 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