如何在 Node.js 和 Express 上分离 CRUD 路由?
How to separate CRUD routes on Node.js and Express?
当您想将模型的所有 CRUD 操作都放在一个文件中时,可以按照我们的第一种方法完成:
routes.js
const express = require("express");
const users = require("../routes/users");
module.exports = function (app) {
app.use(express.json());
app.use("/api/user", users);
};
users.js
router.patch("/", auth, async (req, res) => {
// create and update operations ...
})
router.delete("/:id", auth, async (req, res) => {
// delete operations ...
})
module.exports = router
但是如果我们想要以这种形式为 CRUD 提供单独的文件作为第二种方法怎么办?
用户
|__patchUser.js
|__deleteUser.js
|__index.js
我希望索引文件类似于:
index.js
const express = require("express");
const router = express.Router();
module.exports = router;
像这样的其他分隔文件:
patchUser.js
const router = require("./index");
router.patch("/", auth, async (req, res) => {
})
但这行不通。
如何更正第二种方法分离 CRUD 路由文件?
你应该遵循这个架构。
在 index.js 文件中你应该只调用路由。像,userRoutes,productRoutes。
index.js
const express = require('express');
const userRoutes = require('./routes/user);
const app = express();
app.use('/api/user',userRoutes);
在routes文件夹
user.js
const router = require('express')().Router;
const patchUser = require('./controllers/user/PatchUser');
const deleteUser = require('./controllers/user/DeleteUser');
const auth = require('./middleware/auth);
//keep middlewares in middleware files
router.patch('/',auth,patchUser);
router.delete('/:id',auth,deleteUser);
module.exports = router;
在控制器文件夹中
用户文件夹
PatchUser.js
const patchUser = async(req,res,next)=>{
//todo
}
module.exports = patchUser;
DeleteUser.js
const deleteUser = async(req,res,next)=>{
//todo
}
module.exports = deleteUser;
为了简单起见,您应该按照以下步骤操作:
- 在 controllers/user/.
中创建 PatchUser.js 文件
- 在路由中创建 userRoutes.js 文件。
- 修改index.js 文件。
- 在 controllers/user/.
中创建 DeleteUser.js 文件
- 修改userRoutes.js文件
- 修改index.js文件
一开始,您可能会觉得这很困难,但随着时间的推移和实践,您会发现它非常容易,这是干净架构的第一步。
我希望你也在寻找同样的东西。
当您想将模型的所有 CRUD 操作都放在一个文件中时,可以按照我们的第一种方法完成:
routes.js
const express = require("express");
const users = require("../routes/users");
module.exports = function (app) {
app.use(express.json());
app.use("/api/user", users);
};
users.js
router.patch("/", auth, async (req, res) => {
// create and update operations ...
})
router.delete("/:id", auth, async (req, res) => {
// delete operations ...
})
module.exports = router
但是如果我们想要以这种形式为 CRUD 提供单独的文件作为第二种方法怎么办?
用户
|__patchUser.js
|__deleteUser.js
|__index.js
我希望索引文件类似于:
index.js
const express = require("express");
const router = express.Router();
module.exports = router;
像这样的其他分隔文件:
patchUser.js
const router = require("./index");
router.patch("/", auth, async (req, res) => {
})
但这行不通。
如何更正第二种方法分离 CRUD 路由文件?
你应该遵循这个架构。 在 index.js 文件中你应该只调用路由。像,userRoutes,productRoutes。
index.js
const express = require('express');
const userRoutes = require('./routes/user);
const app = express();
app.use('/api/user',userRoutes);
在routes文件夹
user.js
const router = require('express')().Router;
const patchUser = require('./controllers/user/PatchUser');
const deleteUser = require('./controllers/user/DeleteUser');
const auth = require('./middleware/auth);
//keep middlewares in middleware files
router.patch('/',auth,patchUser);
router.delete('/:id',auth,deleteUser);
module.exports = router;
在控制器文件夹中
用户文件夹
PatchUser.js
const patchUser = async(req,res,next)=>{
//todo
}
module.exports = patchUser;
DeleteUser.js
const deleteUser = async(req,res,next)=>{
//todo
}
module.exports = deleteUser;
为了简单起见,您应该按照以下步骤操作:
- 在 controllers/user/.
- 在路由中创建 userRoutes.js 文件。
- 修改index.js 文件。
- 在 controllers/user/.
- 修改userRoutes.js文件
- 修改index.js文件
一开始,您可能会觉得这很困难,但随着时间的推移和实践,您会发现它非常容易,这是干净架构的第一步。
我希望你也在寻找同样的东西。