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