var config = require('./../config.js') const mysql = require("mysql") const async = require("async"); const pool = mysql.createPool({ ...config.db }) // var pool = mysql.createPool({ // host: "144.48.4.186", // user: "noderest", // password: "8WBtsejYGiEESJMh", // database: "noderest", // connectionLimit: 33, // port: "3306", // waitForConnections: false // }); //mysql事务处理 let execTrans =function(sqlparamsEntities, callback) { //建立连接 pool.getConnection(function (err, connection) { if (err) { //抛出连接错误 return callback(err, null); } connection.beginTransaction(function (err) { if (err) { return callback(err, null); } console.log("开始执行transaction,共执行" + sqlparamsEntities.length + "条数据"); var funcAry = []; sqlparamsEntities.forEach(function (sql_param) { var temp = function (cb) { // var sql = sql_param.sql; // var param = sql_param.params; connection.query(sql_param, function (tErr, rows, fields) { if (tErr) { connection.rollback(function () { console.log("事务失败," + sql_param + ",ERROR:" + tErr); throw tErr; }); } else { return cb(null, 'ok'); } }) }; funcAry.push(temp); }); async.series(funcAry, function (err, result) { console.log("transaction error: " + err); if (err) { connection.rollback(function (err) { console.log("transaction error: " + err); connection.release(); return callback(err, null); }); } else { connection.commit(function (err, info) { console.log("transaction info: " + JSON.stringify(info)); if (err) { console.log("执行事务失败," + err); connection.rollback(function (err) { console.log("transaction error: " + err); connection.release(); return callback(err, null); }); } else { connection.release(); return callback(null, info); } }) } }) }); }); } let query = function (sql, values) { return new Promise((resolve, reject) => { pool.getConnection(function (err, connection) { if (err) { resolve(err) } else { connection.query(sql, values, (err, rows) => { if (err) { reject(err) } else { resolve(rows) } connection.release() }) } }) }) } let createTable = function (sql) { return query(sql, []) } let findDataLast = function (table) { let _sql = "SELECT * FROM ?? ORDER BY id DESC LIMIT 1;" return query(_sql, [table]) } let findDataById = function (table, id) { let _sql = "SELECT * FROM ?? WHERE id = ? " return query(_sql, [table, id, start, end]) } let findDataByPage = function (table, keys, start, end) { let _sql = "SELECT ?? FROM ?? LIMIT ? , ?" return query(_sql, [keys, table, start, end]) } let insertData = function (table, values) { let _sql = "INSERT INTO ?? SET ?" return query(_sql, [table, values]) } let updateData = function (table, values, id) { let _sql = "UPDATE ?? SET ? WHERE id = ?" return query(_sql, [table, values, id]) } let deleteDataById = function (table, id) { let _sql = "DELETE FROM ?? WHERE id = ?" return query(_sql, [table, id]) } let select = function (table, keys) { let _sql = "SELECT ?? FROM ?? " return query(_sql, [keys, table]) } let count = function (table) { let _sql = "SELECT COUNT(*) AS total_count FROM ?? " return query(_sql, [table]) } module.exports = { query, findDataLast, createTable, findDataById, findDataByPage, deleteDataById, insertData, updateData, select, count, execTrans, }