You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

162 lines
4.6 KiB

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,
}