nodejs之express路由分级

nodejs之express路由分级

本文章建议只做参考,不需要原文都复制进行测试

当然,这是按照我的需求npm的包,可以根据自己的需求npm包,不过有几个是必须的,我会进行标注
首先新建一个文件夹,npm init -yes初始化
express

npm install express --save

body-parser获取前端传递过来的数据

npm install body-parser --save

md5加密

npm install md5 --save

mysql 连接数据库,这里可以是其它的数据库,比如MongoDB数据库

npm install mysql --save

cors解决跨域,这里可以根据情况使用

npm install cors --save

connect-multiparty文件上传

npm install connect-multiparty --save

下面是我的代码
app.js

// 本项目入口
const express = require("express")
// 获取前端传递过来的数据
const bodyParser = require("body-parser")
// 引入path
const path = require("path")
//引入登陆注册路由
const LoginToRegister = require("./routers/LoginToRegister")
// 引入垃圾分类数据路由
const GC = require("./routers/gc")

// 创建WEB服务器对象
const app = express()
// 设置端口
let port = 3000

app.use(express.json())
// 添加中间件,将post请求的参数转换为对象
app.use(
  bodyParser.urlencoded({
    extended: false,
  })
)

// 使用Cors模块,用于解决跨域问题
const cors = require("cors")

// 使用cors中间件
app.use(
  cors({
    origin: [
      "http://localhost:8080",
      "http://127.0.0.1:8080",
      "http://localhost:8081",
      "http://127.0.0.1:8081",
    ],
  })
)

// 静态资源管理
app.use("/public", express.static(path.join(__dirname, "public")))
// app.use("/publicc", express.static("./publicCopy"))

// 使用登录注册路由,给登录注册路由添加前缀
app.use("/v1/LG", LoginToRegister)
// 使用垃圾分类数据路由,添加前缀
app.use("/v1/GC", GC)

app.listen(port, () => {
  console.log(`server in running at http://localhost:${port}`)
})

// 添加错误处理中间件
app.use((err, req, res, next) => {
  console.log(err) // 打印传递过来的错误
  res.status(500).send({ code: 500, msg: "服务器端错误" })
})

/utils/db.js

const mysql = require("mysql")

// 创建连接池
let pool = mysql.createPool({
  host: "localhost", // 连接的服务器(代码托管到线上后,此处需改为内网ip,而非外网)
  port: 3306, // mysql服务运行的端口
  database: "garbage_sorting", //选择需要连接的数据库
  user: "root", //数据库用户名
  password: "", //数据库密码
  connectionLimit: 20, //最大连接数
  charset: "utf8", //数据库服务器的编码方式
})

module.exports = pool

/routers/gc.js

const express = require("express")

// 引入连接池对象
const pool = require("../utils/db")
// console.log(pool)

// 创建路由器对象
const gc = express.Router()

// 预估重量查询
gc.get("/estimateWeight", (req, res) => {
  let sql = "SELECT * FROM weight"
  pool.query(sql, (err, results) => {
    if (err) {
      res.send({ message: "SQL Error", code: 500 })
    } else {
      res.send({ message: "success", code: 200, results })
    }
  })
})

//回收分类查询
gc.get("/sortChoice", (req, res) => {
  let sql = "SELECT * FROM sort_choice"
  pool.query(sql, (err, results) => {
    if (err) {
      res.send({ message: "SQL Error", code: 500 })
    } else {
      res.send({ message: "success", code: 200, results })
    }
  })
})

// 根据查询垃圾的类别及其类别的所有数据
gc.get("/search_garbageClass/:garbageName", (req, res) => {
  let garbage = req.params.garbageName //从前端接收过来的要查询的垃圾
  let sql =
    "select * from garbage_classes WHERE garbage_class_id=(select garbage_class_id from garbage where garbage_name= ? );"
  pool.query(sql, [garbage], (err, results) => {
    if (err) {
      res.send({ message: "fault", code: 201 })
    } else {
      res.send({ message: "success", code: 200, result: results[0] })
    }
  })
})

// 查询所有垃圾的数据
gc.get("/getGarbages", (req, res) => {
  let sql =
    "select g.garbage_id,g.garbage_name,g.garbage_remark,gc.garbage_class_name from garbage g INNER JOIN garbage_classes gc on g.garbage_class_id=gc.garbage_class_id"
  pool.query(sql, (err, results) => {
    if (err) {
      res.send({ message: "fault", code: 201 })
    } else {
      res.send({ message: "success", code: 200, results: results })
    }
  })
})

// 模糊搜索查询垃圾
gc.get("/searchGarbage/:search", (req, res) => {
  let search = req.params.search
  // console.log(search)
  let sql =
    "select g.garbage_id,g.garbage_name,g.garbage_remark,gc.garbage_class_name from garbage g INNER JOIN garbage_classes gc on g.garbage_class_id=gc.garbage_class_id where garbage_name like ?"
  pool.query(sql, ["%" + search + "%"], (err, results) => {
    if (err) {
      res.send({ message: "fault", code: 201 })
    } else {
      res.send({ message: "success", code: 200, results: results })
    }
  })
})

// 添加垃圾
gc.get(
  "/addGarbage/:garbageName/:garbageClassId/:garbageRemark",
  (req, res) => {
    let garbageName = req.params.garbageName
    let garbageClassId = req.params.garbageClassId
    let garbageRemark = req.params.garbageRemark

    //以garbage_name为条件进行查找操作,以保证垃圾关键词的唯一性
    let sql =
      "SELECT count(garbage_id) as count from garbage where garbage_name=?"
    pool.query(sql, [garbageName], (error, results) => {
      let count = results[0].count
      if (count == 0) {
        sql =
          "INSERt into garbage (garbage_name,garbage_class_id,garbage_remark) values (?,?,?)"
        pool.query(
          sql,
          [garbageName, garbageClassId, garbageRemark],
          (err, results) => {
            if (err) {
              res.send({ message: "fault", code: 201 })
            } else {
              console.log(res)
              res.send({ message: "success", code: 200, results: results })
            }
          }
        )
      } else {
        res.send({ message: "关键词重复插入", code: 202 })
      }
    })
  }
)

// 删除多个垃圾
gc.post("/deleteGarbages", (req, res) => {
  let ids = req.body.garbageIds
  ids = ids.split(",").map(Number)
  ids = eval(ids)
  console.log(ids)
  let sql = `DELETE from garbage where garbage_id in (?)`
  // console.log(ids)
  pool.query(sql, [ids], (err, results) => {
    console.log(results)
    if (err) {
      res.send({ message: "删除失败", code: 201 })
    } else {
      if (results.affectedRows == 0) {
        return res.send({ message: "没有选中任何数据", code: 202 })
      }
      res.send({ message: "删除成功", code: 200 })
    }
  })
})

// 修改垃圾
gc.get(
  "/updateGarbage/:garbage_id/:garbage_name/:garbage_class_name/:garbage_remark",
  (req, res) => {
    let garbageId = req.params.garbage_id
    let garbageName = req.params.garbage_name
    let garbageClassId = req.params.garbage_class_name
    let garbageRemark = req.params.garbage_remark

    //以garbage_name为条件进行查找操作,以保证垃圾关键词的唯一性
    let sql =
      "SELECT count(garbage_id) as count from garbage where garbage_name=?"
    pool.query(sql, [garbageName], (error, results) => {
      let count = results[0].count
      if (count == 0) {
        sql =
          "UPDATE garbage SET garbage_name=?,garbage_class_id=?,garbage_remark=? WHERE garbage_id=?"
        pool.query(
          sql,
          [garbageName, garbageClassId, garbageRemark, garbageId],
          (err, results) => {
            if (err) {
              res.send({ message: "fault", code: 201 })
            } else {
              console.log(res)
              res.send({ message: "success", code: 200 })
            }
          }
        )
      } else {
        res.send({ message: "关键词重复插入", code: 202 })
      }
    })
  }
)

module.exports = gc

/routers/LoginToRegister.js

const express = require("express")

// 引入md5加密模块
const md5 = require("md5")

// 文件上传模块connect-multiparty
const multipart = require("connect-multiparty")
const multipartMiddleWare = multipart()

// 引入连接池对象
const pool = require("../utils/db")
// console.log(pool)

// 创建路由器对象
const lr = express.Router()

// 添加路由
lr.post("/register", multipartMiddleWare, (req, res) => {
  //console.log(md5('123456'));
  //获取用户名和密码信息
  let client_name = req.body.client_name
  let client_pwd = req.body.client_pwd
  let nickname = req.body.nickname
  let client_phone = req.body.client_phone
  //以client_name为条件进行查询操作,以保证用户名的唯一性
  let sql =
    "SELECT COUNT(client_id) AS count FROM clent_users where client_name=?"
  pool.query(sql, [client_name], (error, results) => {
    if (error) throw error
    let count = results[0].count
    if (count == 0) {
      // 将用户的相关信息插入到数据表
      sql = `INSERT clent_users(client_name,client_pwd,nickname,client_phone,client_head_url) VALUES(?,MD5(?),?,?,?)`
      pool.query(
        sql,
        [
          client_name,
          client_pwd,
          nickname,
          client_phone,
          "/head_portrait/011.jpg",
        ],
        (error, result) => {
          if (error) throw error
          res.send({ message: "ok", code: 200 })
        }
      )
    } else {
      res.send({ message: "user exists", code: 201 })
    }
  })
})
lr.post("/login", (req, res) => {
  //获取用户名和密码信息
  let client_name = req.body.client_name
  let client_pwd = req.body.client_pwd
  let nickname = req.body.nickname
  let id = req.body.id
  let url = req.body.url
  let sql =
    "SELECT client_id,client_name,nickname,client_head_url from clent_users where client_name=? AND client_pwd=MD5(?)"
  pool.query(
    sql,
    [client_name, client_pwd, nickname, id, url],
    (error, results) => {
      if (results.length == 0) {
        //登录失败
        if (error) throw error
        res.send({ mesage: "login failed", code: 201 })
      } else {
        res.send({ meessage: "ok", code: 200, result: results[0] })
      }
    }
  )
})

// 导出路由对象
module.exports = lr

本文章建议只做参考,不需要原文都复制进行测试

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你真的快乐吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值