基于Node.js + Express + SQLite的完整电商后端系统,为web-learning项目提供数据支持。
- ✅ 用户认证(注册/登录/JWT)
- ✅ 商品管理(CRUD、分类、搜索)
- ✅ 购物车功能
- ✅ 收藏功能
- ✅ 订单系统
- ✅ 收货地址管理
- ✅ 商品评价
- ✅ 管理员后台
- ✅ 数据统计
cd backend
npm installnpm run init-dbnpm start
# 或开发模式
npm run dev服务器将在 http://localhost:3000 启动
GET /api/health- 健康检查
POST /api/auth/register- 用户注册POST /api/auth/login- 用户登录
GET /api/products- 获取商品列表GET /api/products/:id- 获取单个商品GET /api/categories- 获取分类GET /api/products/:id/reviews- 获取商品评价
GET /api/user/profile- 获取用户资料PUT /api/user/profile- 更新用户资料
GET /api/cart- 获取购物车POST /api/cart- 添加到购物车PUT /api/cart/:id- 更新购物车商品数量DELETE /api/cart/:id- 移除购物车商品DELETE /api/cart- 清空购物车
GET /api/favorites- 获取收藏列表POST /api/favorites/:productId- 添加收藏DELETE /api/favorites/:productId- 移除收藏
GET /api/addresses- 获取收货地址POST /api/addresses- 添加收货地址PUT /api/addresses/:id- 更新收货地址DELETE /api/addresses/:id- 删除收货地址
GET /api/orders- 获取订单列表GET /api/orders/:id- 获取单个订单POST /api/orders- 创建订单
POST /api/reviews- 添加商品评价
GET /api/admin/stats- 获取统计信息GET /api/admin/orders- 获取所有订单PUT /api/admin/orders/:id/status- 更新订单状态POST /api/admin/products- 创建商品PUT /api/admin/products/:id- 更新商品
- users - 用户表
- products - 商品表
- categories - 分类表
- cart_items - 购物车表
- favorites - 收藏表
- addresses - 收货地址表
- orders - 订单表
- order_items - 订单商品表
- reviews - 评价表
- settings - 系统设置表
# 初始化数据库
npm run init-db
# 重置数据库
npm run reset-db
# 查看数据库状态
npm run status
# 测试数据库连接
npm run test-db
# 备份数据库
npm run backupPORT=3000 # 服务器端口
JWT_SECRET=your-secret-key # JWT密钥
NODE_ENV=development # 环境模式- 用户名:
testuser/ 密码:123456 - 用户名:
admin/ 密码:123456
const login = async (username, password) => {
const response = await fetch('http://localhost:3000/api/auth/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ username, password })
});
const data = await response.json();
if (data.success) {
localStorage.setItem('token', data.token);
localStorage.setItem('user', JSON.stringify(data.user));
}
return data;
};const getProducts = async () => {
const response = await fetch('http://localhost:3000/api/products');
return await response.json();
};const addToCart = async (productId, quantity = 1) => {
const token = localStorage.getItem('token');
const response = await fetch('http://localhost:3000/api/cart', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({ product_id: productId, quantity })
});
return await response.json();
};npm install
npm run init-db
npm startnpm install -g pm2
pm2 start server.js --name "taobao-backend"
pm2 save
pm2 startupFROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
EXPOSE 3000
CMD ["npm", "start"]-
数据库连接失败
- 检查数据库文件权限
- 确保有足够的磁盘空间
- 重启数据库服务
-
JWT认证失败
- 检查token是否过期
- 验证JWT_SECRET配置
- 清除浏览器缓存重新登录
-
跨域问题
- 确保前端地址在CORS白名单中
- 检查nginx/Apache代理配置
# 查看服务器日志
tail -f logs/server.log
# 查看数据库操作日志
tail -f logs/database.log- 运行时: Node.js 18+
- Web框架: Express.js
- 数据库: SQLite3
- 认证: JWT + bcryptjs
- 中间件: cors, body-parser
- 开发工具: nodemon
MIT License