GithubHelp home page GithubHelp logo

kuangshp / nestjs-mysql-api Goto Github PK

View Code? Open in Web Editor NEW
855.0 13.0 151.0 2.68 MB

NestJs CRUD for RESTful API使用nestjs+mysql+typeorm+jwt+swagger企业项目中的RBAC权限管理、实现单地方登录。

TypeScript 97.99% Shell 0.08% JavaScript 1.93%
nestjs mysql typeorm restful-api typescript rbac nest-api cms cms-framework nodejs

nestjs-mysql-api's Introduction

一、项目介绍

  • 1、项目前端采用vue3开发的。前端项目地址
  • 2、采用angular模块化开发方式来构建项目,如果你想用javamvc方式来开发nestjs项目你可以查看v1分支。
  • 3、项目是基于mysql数据库,项目中全部采用typeorm来操作数据库,弱化了原生sql,避免前端的小伙伴没有sql基础。
  • 4、实现用户名、手机号码、邮箱任一的方式实现登录。
  • 5、使用自定义token的方式进行登录鉴权,采用自定义装饰器结合守卫来实现对接口鉴权拦截访问。
  • 6、实现同一时间只能一个地方登录
  • 7、如果你要演示菜单权限和接口权限,请自己创建账号、角色、分配菜单和接口权限。
  • 8、使用winston做日志管理,并且根据小时来拆分日志
  • 9、自定义装饰器实现对接口权限收集,如果这个接口要给角色分配权限的时候就直接加上装饰器,会自动在数据库生成数据

二、使用项目

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

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

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

    DB_HOST=localhost
    DB_USERNAME=root
    DB_PASSWORD=123456
    DB_DATABASE=nestjs-mysql
  • 4、安装依赖包

  • 5、启动项目

    npm run start:dev
  • 5、运行项目会自动初始化菜单数据和用户数据(账号:admin,密码:123456)

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

二、主要实现功能

  • 实现用户的登录、登录鉴权、多点登录限制、菜单权限、接口权限

  • 基于RBAC实现权限控制

  • 集成swagger文档

  • ecosystem.config.js是采用PM2的配置文件,项目开发完后直接运行命令一键部署

    npm run build
    # 开发环境
    npm run pm2:dev
    # 生产环境
    npm run pm2:prod
  • winston日志系统根据小时来划分日志管理,如果要实时查看日志,直接使用PM2查看日志

    pm2 log
  • 自定义装饰器,被装饰器装饰的接口会自动进行入库操作

三、技术解答

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

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

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

  • 3、最近正在搞Nestjs微服务训练营,训练营后打算重构一版

nestjs-mysql-api's People

Contributors

kuangshp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nestjs-mysql-api's Issues

发现一个 git 冲突

src/service/admin/user-role/user-role.service.ts
这里有一个冲突未解决,没用自己的电脑就不提pr啦

Using with multiple database

Hello @kuangshp .
I'm using this project for my project api. And I met an issue when I try to use multiple database. May be my config is wrong.
Currently I have 4 databases. So can you guide me how to configure to be able to connect multiple databases?
Thank you.

app crashed - waiting for file changes before starting...

执行npm run start:dev

$ npm run start:dev

[email protected] start:dev /Users/gaoyangyang/Desktop/oaa/node/nestjs-mysql-api
cross-env NODE_ENV=development nodemon

[nodemon] 2.0.3
[nodemon] to restart at any time, enter rs
[nodemon] watching path(s): src/**/*
[nodemon] watching extensions: ts
[nodemon] starting ts-node -r tsconfig-paths/register src/main.ts
[Nest] 80810 - 2020-05-12 23:21:02 [当前环境] development
[nodemon] app crashed - waiting for file changes before starting...

app crashed - waiting for file changes before starting...

mac
node: 10.15.1
npm: 6.4.1

app crashed

[nodemon] starting ts-node -r tsconfig-paths/register src/main.ts
[Nest] 80810 - 2020-05-12 23:21:02 [当前环境] development
[nodemon] app crashed - waiting for file changes before starting...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.