【发布时间】:2022-02-14 22:12:41
【问题描述】:
所以我试图创建一个函数来对所有路由进行 crud 操作,但发现一旦我用该函数调用一个路由,它就不适用于任何其他路由,并且只会获取 post put 或 delete 中的项目我的代码中的第一条路线。
我的基础路由器
function baseRouter(Model, outputName) {
router
.route("/")
.get((req, res, next) => {
getAllData(res, Model, outputName + "s");
})
.post((req, res, next) => {
let data = new Model(req.body);
addData(res, data, outputName);
});
router
.route("/:id")
.get((req, res, next) => {
getDataById(req, res, Model, outputName);
})
.put((req, res, next) => {
let data = req.body;
updateDataById(req, res, Model, data, outputName);
})
.delete((req, res, next) => {
deleteDataById(req, res, Model, outputName);
});
return router;
}
module.exports = baseRouter;
我调用每条路由的代码
const router = require("express").Router();
//all models
const UserModel = require("../models/user.model");
const ContactModel = require("../models/contact.model");
const LinksModel = require("../models/links.model");
const EducationModel = require("../models/education.model");
const SkillModel = require("../models/skills.model");
const ProjectModel = require("../models/projects.model");
//router
const baseRouter = require("./baseRoute");
// all routes crud operation
router.use("/contact", baseRouter(ContactModel, "Contact"));
router.use("/link", baseRouter(LinksModel, "Link"));
router.use("/education", baseRouter(EducationModel, "Education"));
router.use("/skill", baseRouter(SkillModel, "Skill"));
router.use("/project", baseRouter(ProjectModel, "Project"));
module.exports = router;
我希望我正确地解释了我的问题。
【问题讨论】:
标签: javascript node.js express backend mern