快递Router.param不工作,但app.param确实
问题描述:
我已经挖掉一对夫妇从快车文档线,了解它是如何工作: 快递Router.param不工作,但app.param确实
// ./routes/test.js
var router = require('express').Router();
router.param(['id', 'page'], function (req, res, next, value) {
console.log('CALLED ONLY ONCE with', value);
next();
});
router.get('/user/:id/:page', function (req, res, next) {
console.log('although this matches');
next();
});
router.get('/user/:id/:page', function (req, res) {
console.log('and this matches too');
res.end();
});
module.exports = router;
,并安装它们以通常的方式:app.use('/test', require('./routes/test'));
问题是,在.param
传递的回调没有得到执行。当我将第一行更改为var router = require('express')();
时,它工作正常。一个应用程序只是一个额外的东西的路由器。
我使用快递4.12.4
。有任何想法吗?
答
嗯,这不是一个错误。这是一个错误,但在文档中。路由器不接受数组作为第一个参数,一个应用程序。
+0
我很高兴我看到你的答案!我刚才发布了一个[问题](http://stackoverflow.com/questions/38337965/express-js-router-process-api-requests-with-multiple-parameters)。所以如果我想用Express路由器和两个URL参数来处理这个问题,我该怎么办? –
看起来像这是一个错误,如果你不提供一个参数数组,但只是一个字符串,它会按预期工作。 – robertklep
@robertklep,你说得对,谢谢。我去提交一个错误。 – vehsakul