app.js
const adminRoutes = require('./routes/admin');
app.use('/admin/customer/:customerId', (req, res, next) => {
console.log('middleware id=', req.params.customerId);
next();
}, adminRoutes);
这是routes/admin.js
const express = require('express');
const router = express.Router();
router.post('/user', (req, res) => {
console.log('route id=', req.params.customerId);
res.json(req.params);
});
module.exports = router;
我正在关注输出
middleware id= 1
route id= undefined
预期输出为
middleware id= 1
route id= 1
答案 0 :(得分:2)
如果要从父路由器访问Router
,则需要使用options
mergeParams
属性params
。
const express = require('express');
const router = express.Router({mergeParams:true});
router.post('/user', (req, res) => {
console.log('route id=', req.params.customerId);
res.json(req.params);
});
module.exports = router;
答案 1 :(得分:0)
您可以尝试以下方法:
您可以直接调用路线,而无需使用其他回调,它应该可以工作
app.js
const adminRoutes = require('./routes/admin');
app.use('/admin/customer/:customerId',adminRoutes);
如果不起作用,则必须在使用路由之前在请求对象中设置参数