/nestjs-mysql-api

使用nestjs+mysql+typeorm+jwt+swagger企业项目中的RBAC权限管理。对应的前端项目地址https://github.com/kuangshp/nest-mysql-api-front

Primary LanguageTypeScript

一、项目介绍

  • 1、采用javaMVC的经典开发模型(在nestjs开发中也可以使用基于angular方式的模块化开发模式,看个人喜好),来构建项目结构,也符合后端企业开发的需求。
  • 2、项目是基于mysql数据库开发的
  • 3、使用jwt的方式进行登录鉴权(颗粒度仅到菜单权限)

二、使用项目

  • 1、本项目仅仅是实现了rbac的权限系统,对于其他的功能需要自己基于这个基础上去扩展

  • 2、先在本地创建数据库

  • 3、在项目的根目录的.env文件修改为你自己的数据库基本配置(地址、用户名、密码、数据库)

  • 4、启动项目

    npm run start:dev
  • 5、运行第五步的时候会默认初始化菜单数据和用户数据(账号:admin,密码:123456)

  • 6、如果你想初始化别的数据,可以在src/services/init-db中写上你要初始化的数据

二、主要实现功能

  • 实现用户的登录、jwt鉴权

  • 如果你是要将已有的项目改造成新的项目(基于已经有数据表的时候),可以尝试使用命令

    # 会将数据库文件映射生成typeORM的实体类
    npm run db1
  • 基于RBAC实现权限控制

    项目中采用基于账号的方式来替换用户的,(对一个用户可能有几个账号的情况下的扩展),所以拿到项目后,一般流程是

    • 先创建用户
    • 创建账号的时候关联对应的用户

  • 采用创建账号的时候可以选择该账号对应的角色

  • 创建角色的时候权限列表采用树机构展示出来,可以选择对应的权限

  • 字典管理主要是用于项目中配置下拉框使用的

  • 集成swagger文档

    localhost:7000/api/v1/docs
    # 端口号根据.env文件的PORT=7000	来写
  • module中统一封装了几个模块

    • code是验证码模块
    • file是文件模块
      • upload-img图片上传,可以上传到本地和阿里云oss
      • upload-excel导入excel文件
    • redis-utils封装了几个关于redis的模块
    • yunpian-sms是云片网发送手机短信的
  • ecosystem.config.js是采用PM2的配置文件,项目开发完后直接运行命令一键部署

    npm run build
    # 开发环境
    npm run pm2:dev
    # 生产环境
    npm run pm2:prod
  • 日志系统没有开发,直接使用PM2查看日志

    pm2 log
  • 如果你的想做日志收集可以继承Kafka

三、技术解答

本项目还在持续集成新功能进来,最后会加上前端做一个cms系统的api,后期会拉分支使用graphql提供api

  • 1、有关于nestjs的技术问题或索要关于nestjs的电子书可以直接加我微信(微信号:332904234)备注:nest 开发

  • 2、如果你觉得本项目对你帮助很大,给一个赞