NestJS 项目模板,集成多种 Examples,根据实际项目需要自行裁剪
npm i -g pnpm # 使用 pnpm 作为包管理器
pnpm i -g @nestjs/cli typescript nvm nrm pm2 # 用 nvm 管理 NodeJS 版本, 用 nrm 管理 npm 源, pm2 作为守护进程工具
nvm install 15.11.0 # 安装 NodeJS 15.11.0 版本
nvm use 15.11.0 # 使用 15.11.0 版本
pnpm i #安装本地依赖
# 安装数据库
docker-compose up -d
pnpm i
安装依赖
pnpm start:nodemon
启动开发环境
pnpm start:prod
启动生产环境
如一个文件(config/development.env)已加入到 git track 并已 commit,这时想要加到 .gitignore 中
git rm -r --cached config/development.env
git add .
git commit -m "feat: 撤销已提交的敏感文件"
git push
# 安装相关数据库
docker-compose up -d
# 查看是否运行成功
docker ps
# 或
docker container ls
# 进入容器内部打开 bash
docker exec -it <container-name> bash
# 进入数据库 repl
mongo -u <username> --authenticationDatabase <database-name>
# 创建数据库:nestjs
use nestjs
为 MongoDB nestjs
数据库创建用户
db.createUser(
{
user: "root",
pwd: "1qaz2wsx",
roles: [{"role":"dbAdmin","db":"nestjs"}],
/* All built-in Roles
Database User Roles: read|readWrite
Database Admin Roles: dbAdmin|dbOwner|userAdmin
Cluster Admin Roles: clusterAdmin|clusterManager|clusterMonitor|hostManager
Backup and Restoration Roles: backup|restore
All-Database Roles: readAnyDatabase|readWriteAnyDatabase|userAdminAnyDatabase|dbAdminAnyDatabase
Superuser Roles: root
*/
// authenticationRestrictions: [ {
// clientSource: ["192.168.0.0"],
// serverAddress: ["xxx.xxx.xxx.xxx"]
// } ],
//mechanisms: [ "<SCRAM-SHA-1|SCRAM-SHA-256>", ... ],
//passwordDigestor: "<server|client>"
}
)
nestconfig.json
用于指定服务启动的入口文件及格式,可以缺失(默认src/main.ts)
nest info
输出当前操作系统及安装的 nest 相关信息
AppModule consumer -> next()
Module consumer ->
Module consumer ->
AppModule consumer ->
ModuleControllerGuard ->
ModuleMethodGuard ->
全局拦截器 1 ->
...
全局拦截器 n ->
业务模块控制器拦截器 1 ->
...
业务模块控制器拦截器 n ->
业务模块方法拦截器 1 ->
...
业务模块方法拦截器 n ->
业务模块控制器管道 1 ->
...
业务模块控制器管道 n
业务模块方法管道 1 ->
...
业务模块方法管道 n ->
方法 ->
service 1 ->
...
service n ->
方法 ->
业务模块方法拦截器 n ->
...
业务模块方法拦截器 1 ->
业务模块控制器拦截器 n ->
...
业务模块控制器拦截器 1 ->
全局拦截器 n ->
...
全局拦截器 1 ->
- NestJS 核心概念与能力体系介绍
- 配置项目目录结构、代码规范、热更新等
- 前置基础知识:Class、Decorator、TypeScript、reflect-metadata、RxJS
- NestJS 基于数据流动的架构
- NestJS API 概览
- 如何使用 NestJS 创建一个简单 RESTful API 接口
- 用为请求增加校验(Pipe)
- 请求校验高级篇(一):自定义校验函数
- 请求校验高级篇(二):自定义校验返回
- 上传文件
- 异常处理(Filter)
- 通过统一响应 JSON 结构来理解 Interceptor
- 如何增加“请求 ——> 响应”日志
- 日志高级篇
- 缓存的使用
- 如何统一配置环境变量、数据库配置等
- 理解 Module(普通模块、动态模块、全局模块)
- 理解 Service 和 Provider
- 登录鉴权的方式及使用
- 权限验证的几种方式及使用
- 通过路由权限保护来理解 Guard
- 权限高级篇
- 自定义装饰器
- 理解 Middleware
- 如何生成在线 Swagger 文档
- 如何做国际化
- 如何使用微服务
- 如何集成 GRPC
- TypeORM 介绍及使用
- 集成 TypeORM + MongoDB
- 集成 Mongoose + MongoDB
- 集成 TypeORM + PostgreSQL
- 集成 TypeORM + MySQL
- 集成 Sequelize
- 集成 PrismaJS
- 微信和支付宝支付 Example
- 如何开发 GraphQL 接口
- GraphQL 高级篇
- Model-View-Controller
- 静态文件服务]()
- Server Sent Event
- 集成 Websocket 和 Socket.io
- 支持 Serverless
- 集成消息队列
- 集成定时任务
- 集成 ElasticSearch
- 健康检查
- NestJS 生命周期
- 如何集成 NextJS
- 测试
- 接入异常、性能等服务监控系统
- NestJS 核心思想与源码概述
- 项目实战