express操作MySQLデータベースCRUDのカプセル化を実現
19681 ワード
1、目次構造
コアディレクトリ
2、コアコード
mysql.jsファイル
stuController.jsファイル
routes/stu.jsファイル
コアディレクトリ
-- 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