blog icon indicating copy to clipboard operation
blog copied to clipboard

ES6+thunkify封装和使用 node.js的mysql模块

Open chenshenhai opened this issue 8 years ago • 1 comments

ES6+thunkify封装和使用 node.js的mysql模块

利用ES6 class 语法重新封装mysql模块

databaseUtil.js

const config = require("./../../config") 
const mysql = require("mysql")

//配置数据库参数
const pool = mysql.createPool({
    host     :  config["DB_HOST"],
    user     : config["DB_USER"],
    password : config["DB_PASSWORD"],
    database : config["DB_DATABASE"]
});    

//数据库基本操作方法
const query = function ( sql, values, callback ) {
    pool.getConnection(function(err, conn) {
        if (err) {
            callback(err, false)
        } else {
            var querys = conn.query(sql, values, function(err, rows) {

                if (err) {
                    callback(err, false)
                } else {
                    callback(null,rows)
                }
            }); 
        }
    });
}

//数据库对外操作类
class DatabaseUtil {

    //建表方法
    createTable ( sql, callback ) {
        query( sql, [], callback )
    }

    //根据id查找数据
    findDataById ( table,  id, callback) {
        let  _sql =  "select * from ?? where id = ? "
        query( _sql, [ table, id, start, end ], callback )
    }

    //分页查找数据
    findDataByPage ( table, start, end , callback) {
        let  _sql =  "select * from ??  limit ? , ?"
        query( _sql, [ table,  start, end ], callback )
    }

    //插入数据
    insertData ( table, values, callback ) {
        let _sql = "insert into ?? set ?"
        query( _sql, [ table, values ], callback )
    }

    //更新数据
    updateData ( table, values, id,  callback ) {
        let _sql = "update ?? set ? where id = ?"
        query( _sql, [ table, values, id ], callback )
    }

    //删除数据
    deleteDataById ( table, id, callback ) {
        let _sql = "delete from ?? where id = ?"
        query( _sql, [ table, id ], callback )
    }
}


module.exports = DatabaseUtil

利用thunkify封装方法并使用

const co = require("co")
const thunkify = require("thunkify")
const DatabaseUtil = require("./databaseUtil")
const createTable = thunkify( DatabaseUtil .createTable )



co(function *(){
    let sql = 'create .... '
    let result = yield createTable( sql ); 

}).catch(function onerror(err) {
  console.error(err.stack);
});

chenshenhai avatar Jun 10 '16 14:06 chenshenhai

如果数据回滚呢?

DuncanXiao avatar Jun 19 '18 10:06 DuncanXiao