dbUtils.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. //https://github.com/mysqljs/mysql#readme
  2. var mysql = require('mysql');
  3. //获取数据库配置
  4. var config = require('../configs/config').mysql_dev;
  5. //使用连接池
  6. var pool = mysql.createPool(config);
  7. //公共连接设置
  8. var commonFormat = function(callback) {
  9. pool.getConnection(function(err, connection) {
  10. //console.log(callback);
  11. //自定义参数匹配设置
  12. connection.config.queryFormat = function(query, values) {
  13. if (!values) return query;
  14. return query.replace(/\:(\w+)/g, function(txt, key) {
  15. if (values.hasOwnProperty(key)) {
  16. return this.escape(values[key]);
  17. }
  18. return txt;
  19. }.bind(this));
  20. };
  21. callback && callback(err, connection);
  22. });
  23. };
  24. //存储
  25. module.exports = {
  26. //添加/修改数据
  27. set: function(params) {
  28. // var sql = 'select 1+1 as test';
  29. // pool.query(sql, function(err, rows, fields) {
  30. // console.log(err);
  31. // console.log(rows);
  32. // console.log(fields);
  33. // });
  34. var sql = 'select MD5("123456") as calc';
  35. commonFormat(function(err, connection) {
  36. connection.query(sql, { id: 1 + 1 }, function(err, rows) {
  37. //console.log(err);
  38. console.log(rows);
  39. console.log(rows.length)
  40. });
  41. });
  42. },
  43. //获取数据
  44. get: function(key) {
  45. },
  46. //删除数据
  47. del: function(key) {
  48. },
  49. //事务
  50. transaction: function(params) {
  51. commonFormat(function(err, connection) {
  52. //Transaction Begin
  53. connection.beginTransaction(function(err) {
  54. if (err) throw err;
  55. var keys = [];
  56. var vals = [];
  57. connection.query('insert into :table(' + keys.join(',') + ') values(' + vals.join(',') + ') ', params, function(err, result) {
  58. if (err) {
  59. return connection.rollback(function() {
  60. throw err;
  61. });
  62. }
  63. var insertId = result.insertId;
  64. //Transaction Next
  65. connection.query('insert into :table(' + keys.join(',') + ') values(' + vals.join(',') + ')', params, function(err, result) {
  66. if (err) {
  67. return connection.rollback(function() {
  68. throw err;
  69. });
  70. }
  71. //Transaction Commit
  72. connection.commit(function(err) {
  73. if (err) {
  74. return connection.rollback(function() {
  75. throw err;
  76. });
  77. }
  78. console.log('Transaction Success!');
  79. });
  80. });
  81. });
  82. });
  83. });
  84. }
  85. };