database.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. exports.config = exports.getConnection = exports.executeQuery = exports.testConnection = void 0;
  7. const promise_1 = __importDefault(require("mysql2/promise"));
  8. let pool = null;
  9. const getDbConfig = () => ({
  10. host: process.env.DB_HOST || 'localhost',
  11. port: Number(process.env.DB_PORT) || 3306,
  12. user: process.env.DB_USER || 'root',
  13. password: process.env.DB_PASSWORD || '',
  14. database: process.env.DB_NAME || 'mqtt_vue_dashboard',
  15. charset: 'utf8mb4',
  16. waitForConnections: true,
  17. connectionLimit: 10,
  18. queueLimit: 0,
  19. });
  20. const getPool = () => {
  21. if (!pool) {
  22. const dbConfig = getDbConfig();
  23. console.log('创建数据库连接池:', {
  24. host: dbConfig.host,
  25. port: dbConfig.port,
  26. user: dbConfig.user,
  27. database: dbConfig.database,
  28. env_DB_HOST: process.env.DB_HOST,
  29. env_DB_PORT: process.env.DB_PORT,
  30. env_DB_USER: process.env.DB_USER,
  31. env_DB_NAME: process.env.DB_NAME
  32. });
  33. pool = promise_1.default.createPool(dbConfig);
  34. }
  35. return pool;
  36. };
  37. const testConnection = async () => {
  38. try {
  39. const connection = await getPool().getConnection();
  40. await connection.ping();
  41. connection.release();
  42. console.log('数据库连接成功');
  43. return true;
  44. }
  45. catch (error) {
  46. console.error('数据库连接失败:', error);
  47. return false;
  48. }
  49. };
  50. exports.testConnection = testConnection;
  51. const executeQuery = async (query, params) => {
  52. try {
  53. const [rows] = await getPool().execute(query, params);
  54. return rows;
  55. }
  56. catch (error) {
  57. console.error('查询执行失败:', error);
  58. throw error;
  59. }
  60. };
  61. exports.executeQuery = executeQuery;
  62. const getConnection = () => {
  63. return getPool();
  64. };
  65. exports.getConnection = getConnection;
  66. exports.config = {
  67. testConnection: exports.testConnection,
  68. getConnection: exports.getConnection,
  69. executeQuery: exports.executeQuery
  70. };
  71. exports.default = getPool;
  72. //# sourceMappingURL=database.js.map