# learn-nestjs **Repository Path**: gao-shunpeng/learn-nestjs ## Basic Information - **Project Name**: learn-nestjs - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-20 - **Last Updated**: 2025-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: Nestjs, TypeScript, MySQL, typeorm, Vue ## README
[circleci-image]: https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456 [circleci-url]: https://circleci.com/gh/nestjs/nest一个渐进式的 Node.js 框架,用于构建高效且可扩展的服务端应用程序。
## 项目描述 这是一个 NestJS 学习项目,演示了 NestJS 框架的各种概念和功能。项目包括用户管理、基于角色的访问控制、数据库集成、日志记录、过滤器、拦截器等功能。 ### 功能特性 - **用户管理**: 完整的用户 CRUD 操作和身份验证 - **基于角色的访问控制**: 带权限的角色管理系统 - **数据库集成**: 支持 MySQL/PostgreSQL 的 TypeORM 集成 - **日志系统**: 自定义日志实现 - **全局过滤器**: 错误处理和异常过滤器 - **拦截器**: 请求/响应转换和日志记录 - **数据验证**: 使用 class-validator 进行输入验证 - **配置管理**: 基于环境的配置管理 - **测试**: 单元测试和 e2e 测试设置 ### 项目结构 ``` src/ ├── common/ # 通用工具和共享代码 ├── config/ # 配置文件 ├── course/ # 学习课程材料和示例 ├── entity/ # 数据库实体 ├── enum/ # 枚举和常量 ├── filters/ # 全局异常过滤器 ├── interceptors/ # 请求/响应拦截器 ├── logs/ # 日志配置 ├── migration/ # 数据库迁移 ├── roles/ # 角色管理模块 ├── test/ # 测试工具 └── user/ # 用户管理模块 ``` ## 前置要求 - Node.js (v16 或更高版本) - pnpm 包管理器 - MySQL 或 PostgreSQL 数据库 ## 项目设置 ```bash # 安装依赖 $ pnpm install # 复制环境配置文件 $ cp .env.example .env # 在 .env 文件中配置数据库连接 # 更新以下变量: # DB_HOST=localhost # DB_PORT=3306 # DB_USERNAME=your_username # DB_PASSWORD=your_password # DB_DATABASE=nestjs_learning ``` ## 编译和运行项目 ```bash # 开发模式 $ pnpm run start # 监听模式 $ pnpm run start:dev # 生产模式 $ pnpm run start:prod ``` ## 数据库设置 ```bash # 运行数据库迁移 $ pnpm run migration:run # 生成新的迁移文件 $ pnpm run migration:generate -- -n MigrationName # 回滚上一个迁移 $ pnpm run migration:revert ``` ## 运行测试 ```bash # 单元测试 $ pnpm run test # e2e 测试 $ pnpm run test:e2e # 测试覆盖率 $ pnpm run test:cov ``` ## 学习路径 本项目作为 NestJS 的学习资源进行构建。建议的学习路径如下: 1. **基础概念** (`src/course/03-IOC&DI/`) - 依赖注入 - 控制反转 - 提供者和服务 2. **核心功能** - 控制器和路由 (`src/user/`) - 服务和业务逻辑 - 数据库集成 (`src/entity/`) 3. **高级功能** - 守卫和身份验证 (`src/roles/`) - 拦截器 (`src/interceptors/`) - 异常过滤器 (`src/filters/`) - 日志记录 (`src/logs/`) 4. **测试** - 单元测试 (`src/test/`) - E2E 测试 (`test/`) ## API 接口 ### 用户管理 - `GET /users` - 获取所有用户 - `GET /users/:id` - 根据ID获取用户 - `POST /users` - 创建新用户 - `PUT /users/:id` - 更新用户 - `DELETE /users/:id` - 删除用户 ### 角色管理 - `GET /roles` - 获取所有角色 - `POST /roles` - 创建新角色 - `PUT /roles/:id` - 更新角色 - `DELETE /roles/:id` - 删除角色 ## 部署 当您准备将 NestJS 应用程序部署到生产环境时,有一些关键步骤可以确保它尽可能高效地运行。查看[部署文档](https://docs.nestjs.com/deployment)了解更多信息。 如果您正在寻找基于云的平台来部署您的 NestJS 应用程序,请查看 [Mau](https://mau.nestjs.com),这是我们在 AWS 上部署 NestJS 应用程序的官方平台。Mau 使部署变得简单快捷,只需几个简单的步骤: ```bash $ pnpm install -g @nestjs/mau $ mau deploy ``` 使用 Mau,您只需点击几下即可部署应用程序,让您专注于构建功能而不是管理基础设施。 ## 技术栈 - **框架**: NestJS - **语言**: TypeScript - **数据库**: TypeORM 配合 MySQL/PostgreSQL - **验证**: class-validator, class-transformer - **测试**: Jest - **文档**: Swagger/OpenAPI - **包管理器**: pnpm ## 开发指南 ### 代码规范 - 遵循 TypeScript 最佳实践 - 使用 ESLint 和 Prettier 进行代码格式化 - 编写有意义的提交信息 - 为复杂函数添加 JSDoc 注释 ### 测试 - 为所有服务编写单元测试 - 为关键接口添加 e2e 测试 - 保持测试覆盖率在 80% 以上 ### 数据库 - 使用迁移进行架构更改 - 遵循实体命名约定 - 为性能添加适当的索引 ## 贡献指南 1. Fork 仓库 2. 创建功能分支 (`git checkout -b feature/amazing-feature`) 3. 提交更改 (`git commit -m 'Add some amazing feature'`) 4. 推送到分支 (`git push origin feature/amazing-feature`) 5. 打开 Pull Request ## 资源 查看一些在使用 NestJS 时可能派上用场的资源: - 访问 [NestJS 文档](https://docs.nestjs.com) 了解更多关于框架的信息。 - 如有问题和支持,请访问我们的 [Discord 频道](https://discord.gg/G7Qnnhy)。 - 要深入了解并获得更多实践经验,请查看我们的官方视频[课程](https://courses.nestjs.com/)。 - 使用 [NestJS Mau](https://mau.nestjs.com) 只需点击几下即可将您的应用程序部署到 AWS。 - 使用 [NestJS Devtools](https://devtools.nestjs.com) 可视化您的应用程序图并与 NestJS 应用程序实时交互。 - 需要项目帮助(兼职到全职)?查看我们的官方[企业支持](https://enterprise.nestjs.com)。 - 要保持联系并获取更新,请在 [X](https://x.com/nestframework) 和 [LinkedIn](https://linkedin.com/company/nestjs) 上关注我们。 - 正在找工作,或有工作机会?查看我们的官方[招聘板](https://jobs.nestjs.com)。 ## 支持 Nest 是一个 MIT 许可的开源项目。它能够发展壮大要感谢赞助商和了不起的支持者们的支持。如果您想加入他们,请[点击这里了解更多](https://docs.nestjs.com/support)。 ## 保持联系 - 作者 - [Kamil Myśliwiec](https://twitter.com/kammysliwiec) - 网站 - [https://nestjs.com](https://nestjs.com/) - Twitter - [@nestframework](https://twitter.com/nestframework) ## 许可证 Nest 采用 [MIT 许可证](https://github.com/nestjs/nest/blob/master/LICENSE)。