如何在 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;

为了简单起见,您应该按照以下步骤操作:

  1. 在 controllers/user/.
  2. 中创建 PatchUser.js 文件
  3. 在路由中创建 userRoutes.js 文件。
  4. 修改index.js 文件。
  5. 在 controllers/user/.
  6. 中创建 DeleteUser.js 文件
  7. 修改userRoutes.js文件
  8. 修改index.js文件

一开始,您可能会觉得这很困难,但随着时间的推移和实践,您会发现它非常容易,这是干净架构的第一步。

我希望你也在寻找同样的东西。