db.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. // 连接MySQL
  2. var mysql = require('mysql');
  3. var config = require('./index')
  4. var pool = mysql.createPool(config.database);
  5. var Async = require('async');
  6. console.log("数据库环境",config.database);
  7. module.exports = {
  8. // 处理一个数据库事务
  9. transactionHandler: (callback) => {
  10. pool.getConnection(function(err, connection) {
  11. if (err) {
  12. console.log("getConnection error", err);
  13. return callback(err, null);
  14. }
  15. connection.beginTransaction(function(err) {
  16. if (err) {
  17. console.log("beginTransaction error", err);
  18. return callback(err, null);
  19. }
  20. console.log("开始执行transaction");
  21. callback(null, connection);
  22. })
  23. });
  24. },
  25. // 处理事务的结果
  26. transactionResultHandler: (err, connection, callback) => {
  27. if (err) {
  28. connection.rollback(() => {
  29. console.log("某事务出错,回滚成功, Error: ", err);
  30. connection.release();
  31. });
  32. return;
  33. }
  34. connection.commit(err => {
  35. if (err) {
  36. connection.rollback(() => {
  37. console.log("commit出错,回滚成功, Error: ", err);
  38. connection.release();
  39. });
  40. return;
  41. }
  42. connection.release();
  43. callback();
  44. });
  45. },
  46. // 旧版数据库连接
  47. query: (sql, callback) => {
  48. pool.getConnection(function(err,connection){
  49. if(err){
  50. console.log("db err", err)
  51. console.log("--------db 连接失败 ----------");
  52. logger.error("DB CONNECTION ERROR",err);
  53. console.log("--------db 连接失败 error log end ----------");
  54. }
  55. connection.beginTransaction(function(err) {
  56. if(err){
  57. console.log("db connection error",err);
  58. callback(err,null);
  59. }else{
  60. connection.query(sql,function(qerr,rows){
  61. //释放连接
  62. connection.release();
  63. //事件驱动回调
  64. if (qerr) {
  65. connection.rollback(function() {
  66. console.log("sql回滚成功1",qerr)
  67. callback(qerr,null);
  68. throw qerr;
  69. });
  70. }
  71. connection.commit(function(err) {
  72. if (err) {
  73. connection.rollback(function() {
  74. console.log("sql回滚成功")
  75. throw err;
  76. });
  77. }
  78. callback(qerr,rows);
  79. });
  80. });
  81. }
  82. })
  83. });
  84. },
  85. }