5.9 KiB
5.9 KiB
数据显示问题排查指南
问题描述
小程序端登录成功,但管理后台的数据统计和用户管理没有显示相应的数据。
快速诊断
步骤 1: 运行诊断脚本
cd backend
node src/scripts/diagnoseData.js
这个脚本会检查:
- ✅ 数据库连接状态
- ✅ 数据库名称和配置
- ✅ 数据表是否存在
- ✅ 用户数据统计
- ✅ 预约和提现数据统计
- ✅ 环境配置
步骤 2: 检查数据库配置
后端配置 (backend/.env)
# 检查后端的数据库配置
cat backend/.env | grep DB_
确认以下配置:
DB_HOST=localhost
DB_PORT=3306
DB_NAME=overseas_appointment
DB_USER=root
DB_PASSWORD=your_password
管理后台配置 (admin/.env)
# 检查管理后台的 API 地址
cat admin/.env | grep VITE_API
确认 API 地址指向正确的后端:
VITE_API_BASE_URL=http://localhost:3000
步骤 3: 检查后端日志
启动后端并查看日志:
cd backend
npm run dev
观察是否有以下信息:
- ✅ 数据库连接成功
- ✅ 服务器启动在正确的端口
- ⚠️ 任何错误或警告信息
步骤 4: 测试 API 接口
测试用户列表 API
# 首先登录管理后台获取 token
curl -X POST http://localhost:3000/api/v1/admin/auth/login \
-H "Content-Type: application/json" \
-d '{
"username": "admin",
"password": "admin123"
}'
# 使用返回的 token 查询用户列表
curl -X GET "http://localhost:3000/api/v1/admin/users?page=1&limit=20" \
-H "Authorization: Bearer YOUR_TOKEN_HERE"
测试统计 API
curl -X GET "http://localhost:3000/api/v1/admin/statistics/dashboard" \
-H "Authorization: Bearer YOUR_TOKEN_HERE"
步骤 5: 检查浏览器控制台
- 打开管理后台 (http://localhost:5173)
- 按 F12 打开开发者工具
- 切换到 "Console" 标签
- 切换到 "Network" 标签
- 刷新页面,查看:
- ❌ 是否有 API 请求失败 (红色)
- ⚠️ 是否有 CORS 错误
- ⚠️ 是否有 401/403 认证错误
- ⚠️ 是否有 500 服务器错误
常见问题和解决方案
问题 1: 数据库配置不一致
症状: 诊断脚本显示有用户数据,但管理后台看不到
原因: 小程序和管理后台连接到不同的数据库
解决方案:
- 检查
backend/.env文件 - 确认
DB_NAME是否正确 - 确认所有服务使用相同的数据库配置
问题 2: 管理后台 API 地址错误
症状: 浏览器控制台显示网络错误或 404
原因: 管理后台的 API 基础地址配置错误
解决方案:
- 检查
admin/.env或admin/.env.local - 确认
VITE_API_BASE_URL指向正确的后端地址 - 重启管理后台开发服务器
cd admin
npm run dev
问题 3: CORS 跨域问题
症状: 浏览器控制台显示 CORS 错误
原因: 后端没有正确配置 CORS
解决方案:
检查 backend/src/app.js 中的 CORS 配置:
app.use(cors({
origin: ['http://localhost:5173', 'http://localhost:5174'],
credentials: true
}));
问题 4: 认证 Token 问题
症状: API 返回 401 Unauthorized
原因: Token 过期或无效
解决方案:
- 重新登录管理后台
- 检查浏览器 localStorage 中的 token
- 确认 token 格式正确
问题 5: 数据库表不存在
症状: 诊断脚本显示表不存在或数量不对
原因: 数据库迁移未执行
解决方案:
cd backend
npm run db:init
问题 6: 小程序使用测试数据
症状: 诊断脚本显示没有用户数据
原因: 小程序在开发模式下使用模拟的 openId
解决方案:
- 检查小程序登录时传递的 code
- 查看后端日志确认用户创建
- 确认
authService.js中的逻辑正确执行
数据验证清单
使用以下 SQL 直接查询数据库:
-- 连接到数据库
mysql -u root -p overseas_appointment
-- 检查用户表
SELECT COUNT(*) as total_users FROM user;
SELECT * FROM user ORDER BY created_at DESC LIMIT 5;
-- 检查预约表
SELECT COUNT(*) as total_appointments FROM appointment;
SELECT status, COUNT(*) as count FROM appointment GROUP BY status;
-- 检查提现表
SELECT COUNT(*) as total_withdrawals FROM withdrawal;
SELECT status, COUNT(*) as count FROM withdrawal GROUP BY status;
调试技巧
1. 启用详细日志
在 backend/.env 中添加:
LOG_LEVEL=debug
NODE_ENV=development
2. 使用 Postman 测试 API
导入 Swagger 文档到 Postman:
- 访问 http://localhost:3000/api-docs.json
- 在 Postman 中导入 JSON
- 逐个测试 API 接口
3. 检查数据库连接池
在 backend/src/config/database.js 中添加日志:
const sequelize = new Sequelize(/* ... */, {
logging: console.log, // 启用 SQL 日志
// ...
});
4. 监控网络请求
在管理后台的 admin/src/utils/api.js 中添加请求拦截器日志:
api.interceptors.request.use(config => {
console.log('API Request:', config.method.toUpperCase(), config.url);
return config;
});
api.interceptors.response.use(
response => {
console.log('API Response:', response.status, response.data);
return response;
},
error => {
console.error('API Error:', error.response?.status, error.response?.data);
return Promise.reject(error);
}
);
联系支持
如果以上步骤都无法解决问题,请提供以下信息:
- 诊断脚本的完整输出
- 后端启动日志
- 浏览器控制台的错误信息
- Network 标签中失败的 API 请求详情
- 数据库查询结果
预防措施
为避免将来出现类似问题:
- ✅ 使用统一的环境配置管理
- ✅ 在
.env.example中记录所有必需的配置项 - ✅ 添加健康检查端点
- ✅ 实施完整的错误日志记录
- ✅ 定期备份数据库
- ✅ 使用 Docker 统一开发环境