Files
jiebanke/backend/README_DEVELOPMENT.md
mapleaf 54d00846ac feat(deploy): 更新后端 API 域名并添加部署指南
- 将后端 API域名从 https://api.jiebanke.com 改为 https://webapi.jiebanke.com
- 新增 CentOS 服务器部署指南和相关脚本
- 更新环境变量配置和 API 文档中的示例 URL
2025-09-08 18:10:41 +08:00

5.8 KiB
Raw Blame History

结伴客后端开发完善指南

📋 完善内容概述

本次后端开发完善主要包含以下内容:

1. 环境配置优化

  • 更新环境配置文件 (config/env.js)移除MongoDB配置完善MySQL配置
  • 更新环境变量示例文件 (.env.example)添加MySQL相关配置
  • 数据库配置文件 (src/config/database.js) 现在使用环境配置而非硬编码

2. 测试数据支持

  • 创建测试数据初始化脚本 (scripts/init-test-data.js)
  • 提供标准测试账号(管理员、运营、普通用户、商家用户)
  • 支持密码加密存储bcrypt

3. 自动化测试脚本

  • 创建API端点测试脚本 (scripts/test-api-endpoints.js)
  • 创建数据库连接测试脚本 (scripts/test-database-connection.js)
  • 支持完整的测试用例和结果统计

4. 开发工具链完善

  • 更新package.json脚本命令
  • 提供一键测试和数据初始化功能

🚀 快速开始

环境准备

# 复制环境配置文件
cp .env.example .env

# 安装依赖
npm install

数据库配置

编辑 .env 文件配置MySQL数据库连接

# 数据库配置
DB_HOST=mysql.jiebanke.com
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your-mysql-password
DB_NAME=jiebandata

# 连接池配置
DB_CONNECTION_LIMIT=10
DB_CHARSET=utf8mb4
DB_TIMEZONE=+08:00

开发命令

# 启动开发服务器
npm run dev

# 测试数据库连接
npm run test-db

# 初始化测试数据
npm run init-test-data

# 测试API端点
npm run test-api

# 运行单元测试
npm test

# 代码检查
npm run lint

📊 测试账号

初始化后会创建以下测试账号:

角色 用户名 密码 描述
超级管理员 admin admin123 系统最高权限
运营经理 manager manager123 日常运营管理
普通用户 user1 user123 旅行爱好者
商家用户 merchant1 merchant123 农家乐老板

🔧 API测试

API测试脚本会自动测试以下接口

管理员接口

  • POST /api/v1/admin/login - 管理员登录
  • GET /api/v1/admin/profile - 获取管理员信息
  • GET /api/v1/admin/list - 获取管理员列表

用户接口

  • POST /api/v1/auth/login - 用户登录
  • GET /api/v1/users/profile - 获取用户信息

系统接口

  • GET /health - 健康检查
  • GET /system-stats - 系统统计

🗄️ 数据库配置

开发环境

{
  host: '192.168.0.240',
  port: 3306,
  user: 'root', 
  password: 'aiotAiot123!',
  database: 'jiebandata',
  connectionLimit: 10
}

测试环境

{
  host: '192.168.0.240',
  port: 3306, 
  user: 'root',
  password: 'aiotAiot123!',
  database: 'jiebandata_test',
  connectionLimit: 5
}

生产环境

{
  host: 'nj-cdb-3pwh2kz1.sql.tencentcdb.com',
  port: 20784,
  user: 'jiebanke',
  password: 'aiot741$12346', 
  database: 'jbkdata',
  connectionLimit: 20
}

生产环境连接说明

注意事项

  1. 谨慎操作: 直接连接生产数据库,所有操作都会影响真实数据
  2. 备份优先: 在执行任何修改操作前,建议先备份数据
  3. 权限控制: 确保只有授权人员可以访问生产环境
  4. 监控日志: 密切监控数据库操作日志,及时发现异常
  5. 连接限制: 生产环境连接数限制为20避免过度消耗资源

安全建议

  • 使用VPN连接生产环境
  • 启用SSL加密连接
  • 定期更换密码
  • 实施IP白名单限制
  • 启用数据库审计功能

连接问题排查

如果遇到连接问题,请检查:

  1. 密码验证: 确认生产服务器MySQL的root密码是否为'Aiot123'
  2. 权限配置: 检查MySQL用户权限设置确保允许从当前IP连接
  3. 防火墙: 确认服务器防火墙已开放9527端口
  4. 网络连通性: 使用telnet或ping测试网络连接

当前连接状态

  • 生产服务器(129.211.213.226:9527): 权限被拒绝(ER_ACCESS_DENIED_ERROR)
  • 开发服务器(192.168.0.240:3306): 连接超时(ETIMEDOUT)

本地开发解决方案

推荐使用Docker本地MySQL进行开发

  1. 启动本地MySQL容器
cd /Users/ainongkeji/code/vue/jiebanke/backend
docker-compose up -d mysql
  1. 配置本地环境变量
# 使用本地Docker MySQL
export DB_HOST=mysql.jiebanke.com
export DB_PORT=3306
export DB_PASSWORD=rootpassword
export DB_DATABASE=jiebanke_dev
  1. 初始化数据库
npm run db:reset  # 重置并初始化数据库
npm run db:seed   # 填充测试数据

生产环境连接说明

如需连接生产环境,请联系运维团队:

  • 确认生产服务器MySQL root密码
  • 检查IP白名单配置
  • 验证网络连通性
  • 确认防火墙规则

紧急开发方案

如果所有远程服务器都无法连接可以使用SQLite进行临时开发

export DB_DIALECT=sqlite
export DB_STORAGE=./database.sqlite
npm run dev

📝 开发规范

代码风格

  • 使用ESLint进行代码检查
  • 遵循JavaScript标准风格
  • 使用async/await处理异步操作

安全规范

  • 密码使用bcrypt加密存储
  • 使用环境变量存储敏感信息
  • 实施SQL注入防护
  • 启用CORS和HTTPS

日志规范

  • 开发环境使用详细日志
  • 生产环境使用合并日志
  • 记录关键操作和错误信息

🐛 常见问题

Q: 数据库连接失败

A: 检查MySQL服务是否启动配置是否正确

Q: 测试数据初始化失败

A: 确保数据库表结构已创建,可先运行迁移脚本

Q: API测试失败

A: 确认后端服务已启动,检查网络连接

Q: 权限不足

A: 检查数据库用户权限,确认有足够的操作权限

📞 技术支持

如有问题请联系开发团队或查看详细文档。


最后更新: 2024年 版本: 1.0.0