我在我的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,到目前为止,我已经将其与所有路由集中在一个主路由文件中。但是,我想把这个长文件分成单独的文件。我遇到了...
您可以创建一个routes
文件夹并在其中添加路由逻辑。