Nest基本使用
- 查看nest命令:nest -h
- 创建模块:nest generate module 模块名
- nest generate controller 控制器名
- nest generate controller 服务名
- 生成一个完整模块的代码nest generate resource xxx
- nest start --watch 是最常用的选项了,也就是改动文件之后自动重新 build
- nest g res 项目名,快捷添加文件。
数据传输方式
param是url参数,通过 @Param(参数名) 的装饰器取出来注入到 controller
query 是 url 中 ? 后的字符串,在nest中通过 @Query 装饰器来取
请求体的使用 @Body 装饰器,Nest 会解析请求体,然后注入到 dto 中。
IOC
Inverse of control
因为 Service 是可以被注入也是可以注入到别的对象的,所以用 @Injectable 声明。
而 Controller 只需要被注入,所以 nest 单独给它加了 @Controller 的装饰器。
通过 @Module 声明模块,其中 controllers 是控制器,只能被注入。
providers 里可以被注入,也可以注入别的对象
全部装饰器
- Nest 提供了一套模块系统,通过 @Module声明模块
- 通过 @Controller、@Injectable 分别声明其中的 controller 和 provider
- 如果模块被很多地方都引用,为了方便,可以用 @Global 把它声明为全局的,这样它 exports 的 provider 就可以直接注入了
- 这些注入的依赖如果没有的话,创建对象时会报错。但如果它是可选的,你可以用 @Optional 声明一下,这样没有对应的 provider 也能正常创建这个对象。
定时job
在Nestjs中我们使用 @nestjs/schedule 这个库,import { ScheduleModule } from '@nestjs/schedule';先导入然后在注入。