无法在controllerFunction节点js中获取url参数

时间:2018-06-29 06:15:22

标签: javascript node.js express routing

在我的index.js中,我以这种方式进行了路由。

app.use('/users/:id/transactions',transactionRoutes)

内部交易路线

router.get('/:txnHash',transactionController.getTransaction);

因此对'/ users /:id / transactions /:txnHash'的请求将到达上述路线。

内部transactionController

module.exports.getTransaction = (req,res) => {
    let typeOfTransaction = req.query.type,
        userId            = req.params.id,
        txnHash           = req.params.txnHash;
}

在这里,我可以访问txnHash参数,但userId参数显示为未定义。我认为这是因为路由的:id部分是在index.js中指定的。有什么方法可以解决此问题而无需更改路由。

API请求为

获取'apiurl / users / 42342234 / transactions / 234bh2428b354hjcs'

1 个答案:

答案 0 :(得分:2)

您需要在TransactionRoutes中添加mergeParams,以保留req.params的值。

var router = express.Router({mergeParams: true});

在您之前,

router.get('/:txnHash',transactionController.getTransaction);

希望这会有所帮助!