express操作MySQL数据库实现CRUD的封装

1、目录结构

核心目录

项目
	-- routes
		-- stu.js #路由
	-- db 
		-- mysql.js #数据库配置
	-- controller
		-- stuController.js #控制层

2、核心代码

mysql.js 文件

const mysql = require('mysql')

// 创建数据库连接
const conn = mysql.createConnection({
    host: 'localhost',
	user: 'root',
	password: 'root',
	port: '3306',
	database: 'stusystem'
})
// 开始连接
conn.connect()

//执行SQL的函数
function exec(sql,params) {
	const promise = new Promise((resolve,reject)=>{
		conn.query(sql, params, (err,result) => {
			if(err){
				reject(err);
				return;
			}
			resolve(result);
		})
	});
	return promise;
}

module.exports = exec

stuController.js 文件

const exec = require('../db/mysql')

//添加学生数据
const add = (stu) => {
  const sql = 'insert into stu(stuname,age,sex) values(?,?,?)'
  const params = [stu.name,stu.age,stu.sex]
  return exec(sql,params).then(insertStu=>{
      return {
          id: insertStu.insertId
      }
  })
}

//查询学生
const query = ()=> {
    const sql = "select * from stu"
    return exec(sql).then(data=>{
        return data
    })
}

//修改学生
const update = (stu)=> {
    const sql = "update stu set stuname=?,age=?,sex=? where sid=?"
    const params = [stu.name,stu.age,stu.sex,stu.id]
    return exec(sql,params).then(data=>{
        return {
            row: data.affectedRows
        }
    })
}

//删除学生
const del = (id)=> {
    const sql = "delete from stu where sid=?"
    const params = [id]
    return exec(sql,params).then(data=>{
        return {
            row: data.affectedRows
        }
    })
}

module.exports = {
    add,query,update,del
}

routes/stu.js 文件

let express = require('express')
let router = express.Router()
let bodyParser = require('body-parser')
let stu = require('../controller/stuController')

// 解析提交的form表单参数
let urlencodedParser = bodyParser.urlencoded({ extended: true })

//添加学生
router.post('/add',urlencodedParser,(req,res,next)=>{
    let result = stu.add(req.body)
    result.then(data=>{
        if(data.id > 1){
            res.json({
                code: 200,
                msg: "添加成功",
                data
            })
        }else{
            res.json({
                code: 500,
                msg: "添加失败",
                data
            })
        }
    })
   
})

//查询学生
router.get('/query',(req,res,next)=>{
    let result = stu.query();
    result.then(data=>{
        res.json({
            data
        })
    })
})

//修改学生
router.post('/update',urlencodedParser,(req,res,next)=>{
    let result = stu.update(req.body)
    result.then(row=>{
        res.json({
            row
        })
    })
})

//删除学生
router.get("/del",(req,res,next)=>{
    let result = stu.del(req.query.id)
    result.then(row=>{
        res.json({
            row
        })
    })
})

module.exports = router
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章