blog
blog copied to clipboard
ES6+thunkify封装和使用 node.js的mysql模块
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);
});
如果数据回滚呢?