nestjs笔记
命令创建项目结构
module、controller、service创建
--no-spec
不创建测试用例
1 | nest g mo user |
typeorm-model-generator
数据库表自动生成实体类
在package.json
的scripts配置数据库生成实体类命令:
1 | "db": "rm -rf src/entities & npx typeorm-model-generator -h localhost -d race -p 3306 -u root -x hong -e mysql -o src/entities --noConfig --relationIds --lazy --ce none --cp none" |
npx typeorm-model-generator –help 查看帮助
1 |
|
使用方法:
1、将数据库所有表转成实体类
1 | npm run db |
2.单独将数据库的sys_user表生成实体类
1 | npm run db -- --tables sys_user,sys_role |
装饰器
装饰器 | 介绍 |
---|---|
@Req() | 获取Request对象(express) |
@Res() | 获取Response对象(express) |
@Session() | 获取req.session |
@Param(key?: string) | req.params / req.params[key],param是路由中的参数 |
@Body(key?: string) | req.body / req.body[key] |
@Query(key?: string) | req.query / req.query[key],query是?后的参数 |
@Headers(name?: string) | req.headers / req.headers[name] |
@HttpCode(201) | 指定response中的返回值 |
Modules
属性 | 介绍 |
---|---|
providers | 被Nest injector实例化的providers |
controllers | 被Nest injector实例化的controllers |
imports | 引入这些moludes export 的providers |
exports | providers的子集,被其他模块可以import |
请求生命周期
顺序:
- 中间件
- 卫兵
- 拦截器(在操纵流之前)
- 管道
- 服务端路由函数
- 拦截器(在操纵流之后)
- 异常过滤器(如果捕获到任何异常)
中间件
请求生命周期的第一个流程是经过中间件,我们来实现一个日志中间件
如何实现
中间件必须实现NestMiddleware
./common/middleware/logger.middleware.ts
1 | import { Injectable, NestMiddleware } from '@nestjs/common'; |
如何注册中间件
- 全局中间件
在main.ts中进行全局注册
1 | import { LoggerMiddleware } from './common/middleware/logger.middleware' |
- 应用中间件、中间件消费者等
可针对controller、routes进行单独注册