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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章