# 生命周期 客户端 中间件 守卫 拦截器 管道 控制器 服务 拦截器 过滤器 响应 客户端 - 中间件 - 全局中间件 - 模块中间件 - 守卫 - 全局守卫 - 控制器守卫 - 路由守卫 - 拦截器 - 全局拦截器pre/post - 控制器拦截器pre/post - 路由拦截器pre/post - 管道 - 全局管道 - 控制器管道 - 路由管道 - 路由参数管道 - 过滤器 - 路由过滤器 - 控制器过滤器 - 全局过滤器 # 核心概念 - 控制器(ontrollers) - 处理请求 - 服务(Services) - 数据访问和核心逻辑 - 模块(Modules) - 组合所有的逻辑代码 - 管道(Pipes) - 检验请求数据 - 过滤器(filters) - 处理请求时的错误 - 守卫(Guards) - 鉴权和认证 - 拦截器(Interceptors) - 给请求和响应加入额外的逻辑 - 存储库(Repositores) - 数据库中的数据处理 # @nestjs/config配置文件 ```bash pnpm i -S @nestjs/config ``` 1. 根目录建立.env文件 `以键值对方式存储` ```env HOST = host PORT = port ``` 2. app.module.ts导入 ```ts #!app.module.ts import {ConfigModule} from "@nestjs/config"; import Module from "@nestjs/common" @Module({ imports: [ConfigModule.forRoot({ isGlobal: true,// 是否全局使用 envFilePath: ".env.velopment",// 设置特定的配置文件 loag:[() => { return dotenv.config({path: '.env'})// 加载其他配置文件,但是上面的配置会覆盖下面已存在的配置,都配置同一个变量名,上面的生效 }] })] }) ``` 3. user.controller.ts使用 ```ts import { ConfigService } from "@nestjs/config" @Controller('user') export class UserController{ constructor(private configService: ConfigService){ } @Get() getUser(): string{ console.log(this.configService.get(DB)) return "Hello" } } ``` 4. 使用枚举使用参数 建立enmu文件 ```ts export enum ConfigEnum{ DB = "DB", HOST = "HOST", } ``` 我可以使用js文件来定义配置文件 使用load方法 # 数据库 ## ORM - ORM(Object Relational Mapping)对象关系映射,将对象概念和数据库联系起来 ## 数据库设计参考 open.yespi.cn/list.html ## 使用TypeORM ### 安装 ```bash pnpm i -S @nestjs/typeorm typeorm mysql2 ``` ### 导入 ```ts #!app.module.ts import Module from "@nestjs/common"; import { TypeOrmMoudle } from "@nestjs/typeorm" @Module({ imports: [TypeOrmModule.forRoot({ type:"mysql", host:"localhost", port:3306, username:"root", password:"root", database:"dbname", entities:[], synchronize: true,//同步本地的cchema与数据库 ,初始化使用, logging: ['error'],// 日志等级 })] }) ```