2016-08-19 110 views
0

根據文檔here 我應該能夠修改請求對象。這裏是一個不適合我的例子:Expressjs修改express中的req.params路由器

var express = require('express'); 
var router = express.Router(); 
router.use(function (req, res, next) { 
    req.params.time = Date.now(); 
    next(); 
}); 
router.get('/', function(req, res) { 
    console.log('Time: ', req.params.time); 
    res.send('Something out'); 
}); 
module.exports = router; 

想法如何做到這一點? (node v6.4.0,npm 3.10.3,express 4.14.0)

回答

1

我會做出一個有根據的猜測,並說Express會用請求GET參數重新填充req.params對象。相反,做這樣的事情:

req.time = Date.now(); 

// snip 

console.log(`Time: ${req.time}`); 
+0

就是這樣!男人,那很簡單。謝謝。 – user3287495

+0

我認爲'req.locals'存儲請求變量/方法和'app.locals'來標記全局應用程序變量/方法更好。 –

1

只有在路徑定義有參數時才能使用參數 - 在你的例子中情況並非如此。

通常使用PARAMS這樣:

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

所以添加PARAM time將允許你修改它。 但我認爲這不是你想要的 - 因爲你必須改變URL。所以最好使用類似於

req.somevariable = variable; 

用next()將它傳遞給下一個中間件;

+0

這個答案比我的更正確。請接受這一個,而不是我的。 –