首页 > 解决方案 > 无法在controllerFunction节点js中获取url参数

问题描述

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

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

内部事务路由

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

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

内部事务控制器

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

在这里我可以访问 txnHash 参数,但 userId 参数显示 undefined。我认为这是因为路由的 :id 部分是在 index.js 中指定的。有什么方法可以在不改变路线的情况下解决这个问题。

API 请求是

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

标签: javascriptnode.jsexpressrouting

解决方案


在您的TransactionRoutes中,您需要添加mergeParams将保留这些req.params值的内容。

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

在你之前,

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

希望这可以帮助!


推荐阅读