将Koa路由按类别划分为单独的文件

问题描述 投票:0回答:1

我在我的Node应用程序中使用Koa,到目前为止,我已经将其与所有路由集中在一个主路由文件中。

但是,我想将此长文件分成单独的文件。我在尝试这样做时遇到了一个问题。我认为这与路由器的工作方式有关。

首先,我的起始文件(server.js)看起来像这样:

const Koa = require("koa");
const app = new Koa();
const bodyParser = require("koa-body");
const mongoose = require("mongoose");

const routing = require("./routes");

app.use(bodyParser());
app.use(routing.routes());
const port = "3000";

mongoose.connect("mongodb://localhost:27017/league", {
  useNewUrlParser: true,
  useUnifiedTopology: true
});

app.listen(port, () => console.log(`Server started. Listening on port ${port}...`));

上面引用的我的routing文件看起来像这样(例如,我显示了两条路线,每个路线都引用了不同的模型:]]

const Router = require("koa-router");
const router = new Router();

const Player = require("./../models/Player");
const Game = require("./../models/Game");

// Player Routes ****************************

// Get all players
router.get("/api/players", async ctx => {
  await Player.find()
    .then(players => {
      ctx.body = players;
    })
    .catch(err => {
      ctx.body = "Error: " + err;
    });
});

// Game Routes ****************************

// Get all games
router.get("/api/games", async ctx => {
  await Game.find()
    .then(games => {
      ctx.body = games;
    })
    .catch(err => {
      ctx.body = "Error: " + err;
    });
});

module.exports = router;

所以这一切都照常进行。但是,我想按类别将路由分为单独的文件。但是,当我尝试这样做时,会遇到各种错误,或者该路由在Postman中返回“未找到”。

例如,如果我仅为球员路线创建文件,例如:

const Router = require("koa-router");
const router = new Router();

// Get all players
const Player = require("./../models/Player");

router.get("/api/players", async ctx => {
  await Player.find()
    .then(players => {
      ctx.body = players;
    })
    .catch(err => {
      ctx.body = "Error: " + err;
    });
});

module.exports = {
  router
};

...然后将其拉入我的主routes文件夹index.js文件,如下所示:

const Router = require("koa-router");
const router = new Router();

const Team = require("./../models/Team");
const Game = require("./../models/Game");
const Round = require("./../models/Round");

const playerRoutes = require('./players'); 
// Other Code

module.exports = router;

在邮递员中进行测试时得到“未找到”结果。

非常简单,例如,我如何将“玩家”路线分成自己的文件,然后在主路线文件中引用它?

我在我的Node应用程序中使用Koa,到目前为止,我已经将其与所有路由集中在一个主路由文件中。但是,我想把这个长文件分成单独的文件。我遇到了...

node.js koa
1个回答
0
投票

您可以创建一个routes文件夹并在其中添加路由逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.