From 6abae17fead0b803bca419dd27c8fabc71f8f959 Mon Sep 17 00:00:00 2001 From: theluyuan <1162963624@qq.com> Date: Fri, 31 Oct 2025 10:32:44 +0800 Subject: [PATCH] Implement dynamic database path configuration in database.js, enhancing compatibility with Docker and local development environments. Update db.js to log the database connection path. Remove response data truncation in validator.js for improved readability. --- config/database.js | 31 ++++++++++++++++++++++++++++++- src/database/db.js | 8 ++++++-- src/services/validator.js | 18 ++++++++++-------- 3 files changed, 46 insertions(+), 11 deletions(-) diff --git a/config/database.js b/config/database.js index ae37333..0611221 100644 --- a/config/database.js +++ b/config/database.js @@ -1,9 +1,38 @@ const path = require('path'); +const fs = require('fs'); + +// 数据库文件路径配置 +// 在Docker环境中使用 /app/data,本地开发使用项目根目录的data文件夹 +let dbPath; +if (process.env.DB_PATH) { + // 如果设置了环境变量,使用环境变量的路径 + dbPath = process.env.DB_PATH; +} else if (fs.existsSync('/app/data')) { + // Docker容器内,使用/app/data目录 + dbPath = '/app/data/proxies.db'; +} else { + // 本地开发环境,使用项目根目录的data文件夹 + const dataDir = path.join(__dirname, '../data'); + dbPath = path.join(dataDir, 'proxies.db'); + + // 确保data目录存在 + if (!fs.existsSync(dataDir)) { + try { + fs.mkdirSync(dataDir, { recursive: true }); + } catch (error) { + console.warn('无法创建data目录,将使用项目根目录:', error.message); + // 如果创建失败,回退到项目根目录 + dbPath = path.join(__dirname, '../proxies.db'); + } + } +} + +console.log(`数据库文件路径: ${dbPath}`); const dbConfig = { development: { dialect: 'sqlite', - storage: path.join(__dirname, '../proxies.db') + storage: dbPath } }; diff --git a/src/database/db.js b/src/database/db.js index 2deca99..137c04d 100644 --- a/src/database/db.js +++ b/src/database/db.js @@ -9,15 +9,19 @@ class Database { connect() { return new Promise((resolve, reject) => { + const dbPath = config.development.storage; + console.log(`正在连接数据库: ${dbPath}`); + this.db = new sqlite3.Database( - config.development.storage, + dbPath, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, (err) => { if (err) { console.error('数据库连接失败:', err.message); + console.error('数据库路径:', dbPath); reject(err); } else { - console.log('已连接到 SQLite 数据库'); + console.log(`已连接到 SQLite 数据库: ${dbPath}`); resolve(); } } diff --git a/src/services/validator.js b/src/services/validator.js index f7c4465..33615e6 100644 --- a/src/services/validator.js +++ b/src/services/validator.js @@ -102,10 +102,11 @@ class ProxyValidator { const dataStr = typeof response.data === 'string' ? response.data : JSON.stringify(response.data); - responseData = dataStr.substring(0, 500); - if (dataStr.length > 500) { - responseData += '... (已截断)'; - } + // responseData = dataStr.substring(0, 500); + responseData = dataStr; + // if (dataStr.length > 500) { + // responseData += '... (已截断)'; + // } } catch (e) { responseData = '无法解析响应内容'; } @@ -151,10 +152,11 @@ class ProxyValidator { const dataStr = typeof response.data === 'string' ? response.data : JSON.stringify(response.data); - responseData = dataStr.substring(0, 500); - if (dataStr.length > 500) { - responseData += '... (已截断)'; - } + responseData = dataStr; + // responseData = dataStr.substring(0, 500); + // if (dataStr.length > 500) { + // responseData += '... (已截断)'; + // } } } catch (e) { responseData = '无法解析响应内容';