express+mysql實現簡單的增刪改查

1、首先要確保使用node.js全局安裝過express

      若未安裝

       npm install –g express

            npm install –g express-generator

      確保有一個數據庫

  

 

2、建立express項目

      express  mall-project(項目名爲mall-project)

      修改package.json

             在"dependencies"添加"mysql": "latest"依賴

      npm i

      npm start

3、修改目錄如圖

4、修改代碼

複製代碼
//mysql.js
// MySQL數據庫聯接配置封裝
var mysql = {
    host: '127.0.0.1',
    user: 'root',
    password: 'tll456456',
    database: 'test',
    port: 3306
};
module.exports = mysql;
複製代碼
複製代碼
//handel.js
/*
    數據增刪改查模塊封裝
    req.query 解析GET請求中的參數 包含在路由中每個查詢字符串參數屬性的對象,如果沒有則爲{}
    req.params 包含映射到指定的路線“參數”屬性的對象,如果有route/user/:name,那麼“name”屬性可作爲req.params.name
    req.body通常用來解析POST請求中的數據
     +req.query.id 可以將id轉爲整數
 */
// 引入mysql
var mysql = require('mysql');
// 引入mysql連接配置
var mysqlconfig = require('../config/mysql');
// 引入連接池配置
var poolextend = require('./poolextend');
// 引入SQL模塊
var sql = require('./sql');
// 引入json模塊
var json = require('./json');
// 使用連接池,提升性能
var pool = mysql.createPool(poolextend({}, mysqlconfig));
var userData = {
    add: function(req, res, next) {
        pool.getConnection(function(err, connection) {
            var param = req.query || req.params;
            connection.query(sql.insert, [param.id, param.name, param.age], function(err, result) {
                if (result) {
                    result = 'add'
                }
                // 以json形式,把操作結果返回給前臺頁面
                json(res, result);
                // 釋放連接 
                connection.release();
            });
        });
    },
    delete: function(req, res, next) {
        pool.getConnection(function(err, connection) {
            var id = +req.query.id;
            connection.query(sql.delete, id, function(err, result) {
                if (result.affectedRows > 0) {
                    result = 'delete';
                } else {
                    result = undefined;
                }
                json(res, result);
                connection.release();
            });
        });
    },
    update: function(req, res, next) {
        var param = req.body;
        if (param.name == null || param.age == null || param.id == null) {
            json(res, undefined);
            return;
        }
        pool.getConnection(function(err, connection) {
            connection.query(sql.update, [param.name, param.age, +param.id], function(err, result) {
                if (result.affectedRows > 0) {
                    result = 'update'
                } else {
                    result = undefined;
                }
                json(res, result);
                connection.release();
            });
        });
    },
    queryById: function(req, res, next) {
        var id = +req.query.id;
        pool.getConnection(function(err, connection) {
            connection.query(sql.queryById, id, function(err, result) {
                if (result != '') {
                    var _result = result;
                    result = {
                        result: 'select',
                        data: _result
                    }
                } else {
                    result = undefined;
                }
                json(res, result);
                connection.release();
            });
        });
    },
    queryAll: function(req, res, next) {
        pool.getConnection(function(err, connection) {
            connection.query(sql.queryAll, function(err, result) {
                if (result != '') {
                    var _result = result;
                    result = {
                        result: 'selectall',
                        data: _result
                    }
                } else {
                    result = undefined;
                }
                json(res, result);
                connection.release();
            });
        });
    }
};
module.exports = userData;
複製代碼
複製代碼
//json.js
//封裝接送模塊
var json = function(res, result) {
    if (typeof result === 'undefined') {
        res.json({
            code: '1',
            msg: '操作失敗'
        });
    } else if (result === 'add') {
        res.json({
            code: '200',
            msg: '添加成功'
        });
    } else if (result === 'delete') {
        res.json({
            code: '200',
            msg: '刪除成功'
        });
    } else if (result === 'update') {
        res.json({
            code: '200',
            msg: '更改成功'
        });
    } else if (result.result != 'undefined' && result.result === 'select') {
        res.json({
            code: '200',
            msg: '查找成功',
            data: result.data
        });
    } else if (result.result != 'undefined' && result.result === 'selectall') {
        res.json({
            code: '200',
            msg: '全部查找成功',
            data: result.data
        });
    } else {
        res.json(result);
    }
};
module.exports = json;
複製代碼
複製代碼
//poolextent.js
// 連接池擴展封裝
var poolextend = function(target, source, flag) {
    for (var key in source) {
        if (source.hasOwnProperty(key)) {
            flag ? (target[key] = source[key]) : (target[key] === void 0 && (target[key] = source[key]));
        }
    }
    return target;
}
module.exports = poolextend;
複製代碼
複製代碼
//sql.js
// SQL語句封裝
var user = {
    insert:'INSERT INTO user(id, name, age) VALUES(?,?,?)',
    update:'UPDATE user SET name=?, age=? WHERE id=?',
    delete: 'DELETE FROM user WHERE id=?',
    queryById: 'SELECT * FROM user WHERE id=?',
    queryAll: 'SELECT * FROM user'
};
module.exports = user;
複製代碼
複製代碼
//router/index.js
var express = require('express');
var router = express.Router();
var user = require('../modules/handle');
/* GET users listing. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'SQL for MySQL' });
});
router.get('/addUser', function(req, res, next) {
    user.add(req, res, next);
});
router.get('/queryAll', function(req, res, next) {
    user.queryAll(req, res, next);
});

router.get('/query', function(req, res, next) {
    user.queryById(req, res, next);
});
router.get('/deleteUser', function(req, res, next) {
    user.delete(req, res, next);
});
router.get('/update', function(req, res, next) {
    res.render('update');
});
router.post('/updateUser', function(req, res, next) {
    user.update(req, res, next);
});
module.exports = router;
複製代碼
複製代碼
//index.jade
extends layout

block content
  h1= title
  p
  a(class={active: currentUrl === '/'} href='/queryAll')     數據查詢

  p
  a(class={active: currentUrl === '/'} href='/query?id=1')     定向查詢

  p
  a(class={active: currentUrl === '/'} href='/addUser?id=0&name=xyz&age=18')    數據插入

  p
  a(class={active: currentUrl === '/'} href='/update')   數據更新

  p
  a(class={active: currentUrl === '/'} href='/deleteUser?id=0')    數據刪除
  p
複製代碼
複製代碼
//layout.jade
doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
  body
    block content
複製代碼
複製代碼
//update.jade
extends layout
block content
    h1 更新用戶資料
    form(method='post', action='updateUser')
        div.form-row
            label
                span ID:
                input(type='text',name='id')
        div.form-row
            label
                span name:
                input(type='text',name='name')
        div.form-row
            label
                span age:
                input(type='text',name='age')
        div.form-row
            input(type='submit')
複製代碼

5、重啓

  npm start

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