本文引用的文件
本文件为收藏管理功能的详细技术文档,覆盖以下方面:
收藏管理功能位于后端服务的模块化目录中,采用控制器-服务分层架构,并通过Prisma ORM访问MySQL数据库。认证中间件支持可选认证,开发环境下自动注入测试用户。
graph TB
subgraph "收藏模块"
C["favorites.controller.ts<br/>路由与请求处理"]
S["favorites.service.ts<br/>业务逻辑与数据库操作"]
end
subgraph "认证中间件"
A["auth.ts<br/>optionalAuth 可选认证"]
EH["errorHandler.ts<br/>全局错误处理"]
end
subgraph "缓存中间件"
CA["cache.ts<br/>Redis 缓存中间件"]
end
subgraph "数据层"
P["schema.prisma<br/>Prisma 模型与索引"]
DB["MySQL 数据库"]
end
C --> A
C --> S
S --> P
P --> DB
C --> EH
C --> CA
图表来源
章节来源
章节来源
收藏管理的请求处理流程如下:
sequenceDiagram
participant Client as "客户端"
participant Router as "Koa 路由"
participant Auth as "optionalAuth 中间件"
participant Ctrl as "收藏控制器"
participant Svc as "收藏服务"
participant Prisma as "Prisma ORM"
participant DB as "MySQL"
Client->>Router : HTTP 请求
Router->>Auth : 可选认证
Auth-->>Router : 注入用户上下文或测试用户
Router->>Ctrl : 调用对应控制器方法
Ctrl->>Svc : 调用业务逻辑
Svc->>Prisma : 执行数据库查询/写入
Prisma->>DB : SQL 查询/写入
DB-->>Prisma : 结果集
Prisma-->>Svc : 结果
Svc-->>Ctrl : 业务结果
Ctrl-->>Client : 统一响应体
图表来源
控制器统一使用可选认证中间件,若未携带有效Token则自动注入测试用户ID,便于开发联调。
章节来源
服务层通过Prisma Client执行数据库操作,确保类型安全与SQL注入防护。
章节来源
章节来源
章节来源
章节来源
收藏模型(Favorite)包含:
书籍模型(Book)与收藏模型存在一对多关系,服务层在查询收藏时会预加载书籍关键字段。
章节来源
并发场景:数据库唯一约束保证幂等性;应用层在高并发下仍需依赖数据库约束
flowchart TD
Start(["开始"]) --> Parse["解析用户ID与目标ID"]
Parse --> CheckDup{"检查重复收藏"}
CheckDup --> |存在| ReturnExist["返回现有记录"]
CheckDup --> |不存在| Insert["插入新收藏记录"]
Insert --> LoadBook["加载书籍信息"]
LoadBook --> Done(["结束"])
ReturnExist --> Done
图表来源
收藏模块的依赖关系如下:
graph LR
Ctrl["favorites.controller.ts"] --> Auth["auth.ts"]
Ctrl --> Svc["favorites.service.ts"]
Svc --> Prisma["Prisma Client"]
Prisma --> Model["schema.prisma 模型"]
Model --> DB["MySQL"]
Ctrl --> Err["errorHandler.ts"]
Ctrl --> Cache["cache.ts"]
图表来源
章节来源
[本节为通用性能指导,不直接分析具体文件]
章节来源
收藏管理功能通过清晰的控制器-服务分层、完善的认证与错误处理、以及基于Prisma的数据库模型设计,实现了稳定可靠的收藏能力。开发环境下的可选认证与测试用户脚本提升了联调效率。后续可在收藏列表与状态检查接口上引入缓存策略,并持续优化数据库索引与查询路径,以应对更高的并发与数据规模。
[本节为总结性内容,不直接分析具体文件]
注:以上接口与实际实现保持一致,开发环境可自动注入测试用户ID,便于本地联调。
章节来源
章节来源
章节来源