Node Express API路由,父资源的Id在req.params中不可用

时间:2018-01-31 07:04:12

标签: javascript node.js express routing routeparams

我的问题是我没有在子资源路由的req.params中获取父资源的id。跟我来吧......我会告诉你......

以下是我的代码中的相关部分:

 - routes/
    - index.js
    - countries.js
    - cities.js
 - controllers/
    - cities.js

index.js

let router = require('express').Router();

router.use('/countries', require('./countries'));
router.use('/countries/:countryId/cities', require('./cities'));

module.exports = router;

路由/ countries.js

const router = require('express').Router();

const countries = require('../controllers/countries');

router.post('/', countries.create);

router.get('/', countries.readAll);

router.get('/:_id', countries.readById);

router.patch('/:_id', countries.updateById);

router.delete('/:_id', countries.deleteById);

module.exports = router;

路由/ cities.js

const router = require('express').Router();

const cities = require('../controllers/cities');

router.get('/', cities.readAll);

router.get('/:_id', cities.readById);

module.exports = router;

控制器/ cities.js

module.exports.readAll = async function (req, res, next)
{
    return res.json(req.params);
};

module.exports.readById = async function (req, res, next)
{
    return res.json(req.params);
};

现在,问题如下:

如果我调用以下API:

获取国家/ 1 /城市

结果是{} 什么时候应该让我回来{“countryId”:“1”}

另外,当我调用以下API时:

获取国家/ 1 /城市/ 2

结果是{“_ id”:“2”} 什么时候应该让我回来{“countryId”:“1”,“_ id”:“2”}

所以问题是由于某种原因,父资源的id(countryId)在子资源的控制器中是不可访问的。

请告知

1 个答案:

答案 0 :(得分:0)

在这个SO问题中找到答案 Nested routes in express, where a parent route includes a param

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