db.util.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /**
  2. * 数据库工具,使用数据库连接池获取连接,执行查询,之后将连接返回连接池。
  3. */
  4. "use strict";
  5. let configFile = require('../include/commons').CONFIG_FILE;
  6. let config = require('../resources/config/' + configFile);
  7. let log = require('./log');
  8. let crypto = require('crypto');
  9. class DbUtil {
  10. constructor() {
  11. }
  12. static execQuery(pool, options) {
  13. if (config.showSQL) log.info(options.sql);
  14. pool.getConnection(function (err, connection) {
  15. let sql = options['sql'];
  16. let args = options['args'];
  17. let handler = options['handler'];
  18. if (err) {
  19. return handler(err, null);
  20. }
  21. // 执行查询
  22. if (args) {
  23. connection.query(sql, args, function (err, results) {
  24. if (err) {
  25. log.error("Execute SQL failed, arguments: " + args + ", sql: " + sql);
  26. return handler(err, results);
  27. }
  28. handler(null, results);
  29. });
  30. } else {
  31. connection.query(sql, function (err, results) {
  32. if (err) {
  33. log.error("Execute SQL failed: " + sql);
  34. return handler(err, results);
  35. }
  36. handler(null, results);
  37. });
  38. }
  39. // 返回连接池
  40. connection.release(function (err) {
  41. if (err) {
  42. log.error('Database - release connection failed, ' + err);
  43. }
  44. });
  45. });
  46. }
  47. /**
  48. * 为字符串数组生成一个Hash值,为保证唯一性,生成前先对数组进行排序。
  49. *
  50. * @param stringArray
  51. */
  52. static stringArrayHash(stringArray) {
  53. let sortedArr = stringArray.sort();
  54. return crypto.createHash("sha1").update(sortedArr.join(",")).digest('hex');
  55. }
  56. }
  57. module.exports = DbUtil;