首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在nodejs中的不同文件中分离不同的路由?

问如何在nodejs中的不同文件中分离不同的路由?
EN

Stack Overflow用户
提问于 2022-05-25 04:36:12
回答 2查看 41关注 0票数 0

我正在学习reactjs和nodejs,在其他堆栈溢出成员的帮助下,我成功地创建了前端。现在我正在nodejs的后端工作。Nodejs也运行良好,但现在我所有的代码都在一个index.js文件中,我担心它会变得越来越大。

我只想知道如何从index.js中移除文件?就像。我有目录(添加,修改,删除列表),然后相同的产品,用户等。

我的路线是:

代码语言:javascript
复制
/add-category
/mod-category
/del-category
/categories

/add-user
/mod-user
/del-user
/users

/add-product
/mod-product
/del-product
/products

它们都工作得很好,只是在一个index.js文件中。如何将产品路由转移到products.js中,然后将产品类别转移到categories.js中,将用户转移到users.js中?

关于我的index.js是如何的,我的一些代码如下:

代码语言:javascript
复制
const express = require("express");
const app = express();
const mysql = require("mysql");
const cors = require("cors");

app.use(cors());
app.use(express.json());

const db = mysql.createConnection({
    user: "root",
    host: "localhost",
    password: "",
    database: "shop",
});

app.get("/admin/categories", (req, res) => {
    db.query("SELECT * FROM categories ORDER BY catg_name", (err, result) => {
        if (err) {
            console.log(err);
        } else {
            res.send(result);
        }
    });
});

app.put("/admin/mod-category", (req, res) => {
    const id = req.body.id;
    const name = req.body.name;
    const description = req.body.description;
    const status = req.body.status;

    db.query(
        "UPDATE categories SET catg_name = ?, catg_description = ?, catg_status = ? WHERE catg_id = ? LIMIT 1",
        [name, description, status, id],
        (err, result) => {
            if (err) {
                console.log(err);
            } else {
                res.send(result);
            }
        }
    );
});

app.delete("/admin/del-category/:id", (req, res) => {
    const id = req.params.id;

    db.query(
        "DELETE FROM categories WHERE id = ? LIMIT 1",
        [id],
        (err, result) => {
            if (err) {
                console.log(err);
            } else {
                res.send(result);
            }
        }
    );
});

app.listen(3001, () => {
    console.log("Server is running on port 3001");
});

任何帮助都是致命的。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2022-05-25 05:00:52

您可以为每个集合创建一个单独的文件。

类别路由文件

代码语言:javascript
复制
const router = require('express').Router();

router.get('/categories/:id', (req, res) => {
  // get a category by ID
});

router.post('/categories', () => {
  // create a category
});

module.exports = router;

然后是产品的文件

代码语言:javascript
复制
const router = require('express').Router();

router.get('/products/:id', (req, res) => {
  // get a product by id
});

router.post('/products', () => {
  // create a product
});

module.exports = router;

之后,将导出的路由器导入索引文件,并与app.use()函数一起使用它们

代码语言:javascript
复制
const express = require('express');
const productsRouter = require("./src/productsRouter");
const categoriesRouter = require("./src/categoriesRouter");

const app = express();

app.use(productsRouter);
app.use(categoriesRouter);
票数 1
EN

Stack Overflow用户

发布于 2022-05-25 05:23:33

在这种情况下,可以将每个端点操作定义为一个文件函数。

您可以使用所需的任何函数来执行categories.js文件。

代码语言:javascript
复制
const database = require('./connection.js')

const CATEGORIES = {

    edit_categories : (req, res) => {
        ...
    },

    delete_categories : (req, res) => {
        ...
    },

    find_categories : (req, res) => {
        ...
    }

}

module.exports = CATEGORIES

另外,您可以定义您的connection.js

代码语言:javascript
复制
const mysql = require("mysql");

const database = () =>{
    const db = mysql.createConnection({
        user: "root",
        host: "localhost",
        password: "",
        database: "shop"
    });
    return db;
}

module.exports = database();

然后把它全部使用

代码语言:javascript
复制
const express = require("express");
const app = express();
const cors = require("cors");

const  CATEGORIES  = require('./categories.js');

app.use(cors());
app.use(express.json());


app.get("/admin/categories", CATEGORIES.find_categories );
app.put("/admin/mod-category", CATEGORIES.edit_categories );
app.delete("/admin/del-category/:id", CATEGORIES.delete_categories );

app.listen(3001, () => {
    console.log("Server is running on port http://127.0.0.1:3001");
});

显然,有许多不同的方式来构造您的项目(您可以通过这种方式分离路线、建模和视图)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72372000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档