{"id":13486825,"url":"https://github.com/kuangshp/nestjs-mysql-api","last_synced_at":"2025-05-16T19:00:26.139Z","repository":{"id":40272639,"uuid":"200995481","full_name":"kuangshp/nestjs-mysql-api","owner":"kuangshp","description":"NestJs CRUD for RESTful API使用nestjs+mysql+typeorm+jwt+swagger企业项目中的RBAC权限管理、实现单地方登录。","archived":false,"fork":false,"pushed_at":"2024-05-30T20:30:13.000Z","size":2748,"stargazers_count":898,"open_issues_count":3,"forks_count":166,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-04-03T18:14:14.250Z","etag":null,"topics":["cms","cms-framework","mysql","nest-api","nestjs","node-cms","nodejs","rbac","restful-api","typeorm","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kuangshp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-08-07T07:21:07.000Z","updated_at":"2025-03-27T07:23:18.000Z","dependencies_parsed_at":"2024-04-12T17:24:55.299Z","dependency_job_id":"7253bd15-3d35-4aee-8cd3-114e869ca042","html_url":"https://github.com/kuangshp/nestjs-mysql-api","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuangshp%2Fnestjs-mysql-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuangshp%2Fnestjs-mysql-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuangshp%2Fnestjs-mysql-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuangshp%2Fnestjs-mysql-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kuangshp","download_url":"https://codeload.github.com/kuangshp/nestjs-mysql-api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248606859,"owners_count":21132428,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cms","cms-framework","mysql","nest-api","nestjs","node-cms","nodejs","rbac","restful-api","typeorm","typescript"],"created_at":"2024-07-31T18:00:51.728Z","updated_at":"2025-04-12T17:38:05.640Z","avatar_url":"https://github.com/kuangshp.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","Nestjs"],"sub_categories":[],"readme":"## 一、项目介绍\r\n\r\n- 1、项目前端采用`vue3`开发的。前端项目地址\r\n  - [`github`地址](https://github.com/kuangshp/nest-admin-vue)\r\n- 2、采用`angular`模块化开发方式来构建项目，如果你想用`java`的`mvc`方式来开发`nestjs`项目你可以查看`v1`分支。\r\n- 3、项目是基于`mysql`数据库，项目中全部采用`typeorm`来操作数据库，弱化了原生`sql`，避免前端的小伙伴没有`sql`基础。\r\n- 4、实现用户名、手机号码、邮箱任一的方式实现登录。\r\n- 5、使用自定义`token`的方式进行登录鉴权，采用自定义装饰器结合守卫来实现对接口鉴权拦截访问。\r\n- 6、实现同一时间只能一个地方登录\r\n- 7、如果你要演示菜单权限和接口权限，请自己创建账号、角色、分配菜单和接口权限。\r\n- 8、使用`winston`做日志管理，并且根据小时来拆分日志\r\n- 9、自定义装饰器实现对接口权限收集，如果这个接口要给角色分配权限的时候就直接加上装饰器，会自动在数据库生成数据\r\n\r\n## 二、使用项目\r\n\r\n- 1、本项目仅仅是实现了`rbac`的权限系统，对于其他的功能需要自己基于这个基础上去扩展\r\n\r\n- 2、先在本地创建数据库\r\n\r\n- 3、在项目的根目录的`.env`文件修改为你自己的数据库基本配置(地址、用户名、密码、数据库)\r\n\r\n  ```properties\r\n  DB_HOST=localhost\r\n  DB_USERNAME=root\r\n  DB_PASSWORD=123456\r\n  DB_DATABASE=nestjs-mysql\r\n  ```\r\n\r\n- 4、安装依赖包\r\n\r\n- 5、启动项目\r\n\r\n  ```shell\r\n  npm run start:dev\r\n  ```\r\n\r\n- 5、运行项目会自动初始化菜单数据和用户数据(账号:`admin`,密码:123456)\r\n\r\n- 6、如果你想初始化别的数据,可以在`src/services/init-db`中写上你要初始化的数据\r\n\r\n## 二、主要实现功能\r\n\r\n- [x] 实现用户的登录、登录鉴权、多点登录限制、菜单权限、接口权限\r\n\r\n- [x] 基于`RBAC`实现权限控制\r\n\r\n- [x] 集成`swagger`文档\r\n\r\n- [x] `ecosystem.config.js`是采用`PM2`的配置文件,项目开发完后直接运行命令一键部署\r\n\r\n  ```shell\r\n  npm run build\r\n  # 开发环境\r\n  npm run pm2:dev\r\n  # 生产环境\r\n  npm run pm2:prod\r\n  ```\r\n\r\n- [x] `winston`日志系统根据小时来划分日志管理,如果要实时查看日志，直接使用`PM2`查看日志\r\n\r\n  ```shell\r\n  pm2 log\r\n  ```\r\n\r\n- [x] 自定义装饰器，被装饰器装饰的接口会自动进行入库操作\r\n\r\n## 三、技术解答\r\n\r\n\u003e 本项目还在持续集成新功能进来,最后会加上前端做一个`cms`系统的`api`,后期会拉分支使用`graphql`提供`api`\r\n\r\n- 1、有关于`nestjs`的技术问题或索要关于`nestjs`的电子书可以直接加我微信加入技术交流群(微信号:332904234)\u003cfont color=\"#f00\"\u003e备注:nest 开发\u003c/font\u003e\r\n\r\n  \u003cimg src=\"https://shuiping.oss-cn-shenzhen.aliyuncs.com/nest-mysql-api/wx.jpg\" width=\"200\" height=\"220\" style=\"margin-left:0\" /\u003e\r\n\r\n- 2、如果你觉得本项目对你帮助很大,**给一个赞**\r\n- 3、最近正在搞`Nestjs`微服务训练营，训练营后打算重构一版\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuangshp%2Fnestjs-mysql-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkuangshp%2Fnestjs-mysql-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuangshp%2Fnestjs-mysql-api/lists"}