无法将参数从中间件传送到路由

时间:2018-08-01 13:32:44

标签: node.js express

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

2 个答案:

答案 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);

如果不起作用,则必须在使用路由之前在请求对象中设置参数