【问题标题】:Node Express API routing, Id of parent resource not available in req.paramsNode Express API 路由,父资源的 ID 在 req.params 中不可用
【发布时间】:2018-07-10 05:17:19
【问题描述】:

我的问题是我没有在子资源的路由中获取 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;

routes/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;

路线/城市.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)在子资源的控制器中无法访问。

请指教

【问题讨论】:

    标签: javascript node.js express routing routeparams


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      • 1970-01-01
      • 2018-01-10
      • 2017-06-09
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多