【问题标题】:Express.js returning multiple routes in a single exported router object returns incorrect routeExpress.js 在单个导出的路由器对象中返回多个路由返回不正确的路由
【发布时间】:2021-05-27 08:40:19
【问题描述】:

我正在尝试将 MVC 模式用于 express。我正在模块化路由并尝试仅在服务器条目文件中声明快速路由器,而不是其他任何地方。

我当前的问题是在我的 主路由文件(见下文)中导出我的 appRoute 函数时,第一个路由(用户路由)返回用户。我有另一个名为 game 的路由,它在同一函数中导出,但它仍然返回用户而不是游戏。

两个路由都有一个名为 getAll 的控制器函数,它从不同的表中获取不同的数据。

如果我尝试访问路由:http://localhost:8000/user/getAll,它会返回所有用户就好了。 如果我尝试访问路由:http://localhost:8000/game/getAll,它仍然会返回所有用户,即使他们是不同的路由......

如果我在主路由文件中将用户和游戏的顺序颠倒过来,即游戏在前,用户在后,用户开始返回游戏。就像第二条路线模仿第一条路线一样。

这可能很简单,但我将不胜感激。

我的代码如下图

服务器入口点 (index.js)

const app = express();
const router = express.Router();
const bootstrap = require('./src/bootstrap');
bootstrap(app, router);

我将应用程序和路由器实例传递到我的引导文件,所有路由都将导出到该文件。

bootstrap.js(此文件获取所有导出的路由并在应用程序中使用它们)

const { appRoute } = require('./routes');

module.exports = (app, router) => {
  return app.use('/', appRoute(router));
};

我将路由器实例传递给我的主路由文件,所有路由都从该文件中导出。

主路由文件 (index.js):此文件需要所有路由并在路由器实例中使用它们。我认为这可能是我的问题所在,但我对如何解决它有点困惑。

const { userRoute } = require('./userRoute');
const { gameRoute } = require('./gameRoute');

exports.appRoute = (router) => {
  router.use('/user', userRoute(router));
  router.use('/game', gameRoute(router));
  return router;
};

游戏路由文件(index.js):返回所有用户而不是游戏

const { gameController } = require('../../controllers');

exports.gameRoute = (router) => {
  return router.get('/getAll', gameController.getAll);
};

非常感谢任何帮助。如果需要任何澄清,请告诉我。

【问题讨论】:

    标签: javascript node.js express routes


    【解决方案1】:

    我认为你需要为游戏和用户创建一个单独的路由器。

    the express.Routing section and birds.js example here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      • 2018-06-03
      • 2020-01-16
      • 2018-06-17
      • 2022-07-24
      相关资源
      最近更新 更多