一、创建项目
1、创建
安装 Nest CLI(只需要安装一次)
npm i -g @nestjs/cli
进入要创建项目的目录,使用 Nest CLI 创建项目
nest new 项目名
运行项目
npm run start
开发环境下运行,自动刷新服务
npm run start:dev
2、目录结构
main.ts
入口文件,可以配置全局的中间件,配置平台(如express)等
app.module.ts
根模块,定义controller、service
xxx.controller.ts
xxx.service.ts
二、控制器(controller)、路由、get、post、方法参数装饰器
1、控制器
nest g controller 要创建的控制器的名字
例如nest g controller article
此时创建的目录及文件如下
并在app.module.ts中进行注册
2、路由
路由和controller的使用都与springboot基本一致
import { Controller, Get } from '@nestjs/common';
@Controller('article')
export class ArticleController {
@Get()
index(): string {
return ‘这是 article 里面的 index’;
}
@Get(‘add’)
add(): string {
return ‘这是 article 里面的 index’;
}
}
3、get请求获取参数
(1)、@Query()
(2)、@Request()
4、post请求获取参数
(1)、@Body()
5、获取动态路由参数
(1)、@Param()
6、只获取参数对象里的某个属性
只获取id属性
7、路由可以模糊匹配
三、模板引擎、静态资源
1、配置静态资源目录
将静态资源放在根目录下public中
(1)、正常创建
main.ts中(以express平台为例)
(2)、配置虚拟目录
main.ts
或
2、配置模板引擎(以ejs为例)
安装模板引擎
npm i ejs
根目录下新建文件夹views
配置模板引擎
在views/default/index.ejs
渲染页面
3、路由跳转
res.redirect('/user'); //路由跳转
四、Nestjs中的服务(service)
1、创建服务
nest g service 服务名称
例如nest g service news
main.ts中自动引入
2、使用服务
五、上传文件
npm i -D @types/multer
1、上传单个文件
2、多文件上传
3、注意事项
六、中间件
相当于拦截器、过滤器等
1、创建中间件
nest g middleware (目录)中间件名称
例如nest g middleware middleware/init
2、配置中间件
在 app.module.ts 中继承 NestModule 然后配置中间件
3、多个中间件
consumer.apply(cors(), helmet(), logger).forRoutes(CatsController); 或直接写路由
4、函数式中间件
5、全局中间件
全局中间件只能使用函数式中间件
七、管道
Nestjs中的管道可以将输入数据转换为所需的输出。此外,它也可以处理验证, 当数据不正确时可能会抛出异常。
1、创建管道
nest g pipe 管道名
例如nest g pipe pipe/news
2、使用管道
八、模块
1、创建模块
nest g module 模块名
2、Nestjs 中的共享模块
实际上,每个模块都是一个共享模块。一旦创建就能被任意模块重复使用。假设我们将在几
个模块之间共享 CatsService 实例。 我们需要把 CatsService 放到 exports 数组中,如下所
示:
九、守卫
守卫是一个使用 @Injectable() 装饰器的类。 守卫应该实现 CanActivate 接口。
在Nextjs中如果我们想做权限判断的话可以在守卫中完成,也可以在中间件中完 成。
1、创建守卫
nest g guard 守卫名称
例如nest g guard guard/auth
2、使用守卫
(1)、在控制器里使用守卫
(2)、在方法上使用守卫
(3)、全局使用守卫
十、Nestjs中使用Mongoose操作Mongodb数据库
1、安装模块
npm i @nestjs/mongoose mongoose
2、配置数据库连接
3、定义schema
4、在需要操作数据库的控制器的module中配置model
5、进行数据查询
新建一个service,在里面进行数据库查询