Nestjs基础

一、创建项目

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,在里面进行数据库查询

6、条件查询

7、增删改查

(1)、增

(2)、删

(3)、改

(4)、查

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/867967.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GuitarPro2024音乐软件#创作神器#音乐梦想

嘿,亲爱的朋友们!👋👋👋今天我要给你们安利一款超赞的软件——Guitar Pro。这款软件简直是吉他手的福音啊!🎉🎉🎉 Guitar Pro免费绿色永久安装包下载:&#…

YOLOv8 | 代码逐行解析(五) | YOLOv8中损失函数计算的详解包含Cls和Bbox计算的解析,小白必看(下)

一、本文介绍 本文给大家带来的是YOLOv8中的损失函数计算的完整解析,内容包括v8DetectionLoss的解析,以及BboxLoss的解析,如果你相对损失函数的计算原理,本文内容绝对会对你有所帮助,全文内容包含1万两千字&#xff0…

(十) Docker compose 本地部署 apollo

文章目录 1、apollo2、数据库准备3、启动后会用到的几个地址4、docker-compose运行 apollo方式一:使用容器 hostName 作为网络媒介方式二:使用端口映射固定 ip 作为网络媒介 6、客户端 1、apollo https://www.apolloconfig.com/#/zh/deployment/quick-s…

使用策略模式加工厂模式实现数据上传时的不同云平台的处理

在处理不同云存储的 SDK 和接口调用时可以使用策略模式加工厂模式实现了灵活的云存储上传处理 策略模式:可以为每个云存储(如阿里云、腾讯云等)创建一个策略类,实现统一的接口,来封装不同的上传逻辑。工厂模式&#x…

【代码管理的必备工具:Git的基本概念与操作详解】

一、Git 初识 1.提出问题 不知道你工作或学习时,有没有遇到这样的情况:我们在编写各种⽂档时,为了防止⽂档丢失,更改失误,失误后能恢复到原来的版本,不得不复制出⼀个副本,比如: “…

敏感词匹配DFA算法

算法简介与场景介绍 DFA算法,中文全称为确定性有穷自动机。它的基本思想是构建一个有穷自动机,当用户输入文本时,通过自动机的状态转换来快速匹配敏感词。具体特征是,有一个有效状态的集合和一些从一个状态通向另一个状态的边&am…

VuePress 的更多配置

现在,读者应该对 VuePress、主题和插件等有了基本的认识,除了插件,VuePress 自身也有很多有用的配置,这里简单说明下。 ‍ ‍ VuePress 的介绍 在介绍了 VuePress 的基本使用、主题和插件的概念之后,我们再来看看官…

简介空间复杂度

我们承接上一篇博客。我们写了时间复杂度之后,我们就要来介绍一下另一个相关复杂度了。空间复杂度。我觉得大家应该对空间复杂度认识可能比较少一些。我就是这样,我很少看见题目中有明确要求过空间复杂度的。但确实有这个是我们不可忽视的,所…

PXIe-7976【K410T】

起售价 RMB 152,880.00 块RAM(BRAM): 28620 kbit 动态RAM(DRAM): 2 GB FPGA: Kintex-7 410T PXI背板链路: PCI-Express Gen2 x 8 FPGA片: 63550 DSP片: 1540

ChatGPT-4o大语言模型优化、本地私有化部署、从0-1搭建、智能体构建等高级进阶

目录 第一章 ChatGPT-4o使用进阶 第二章 大语言模型原理详解 第三章 大语言模型优化 第四章 开源大语言模型及本地部署 第五章 从0到1搭建第一个大语言模型 第六章 智能体(Agent)构建 第七章 大语言模型发展趋势 第八章 总结与答疑讨论 更多应用…

昇思25天学习打卡营第12天|FCN图像语义分割

文章目录 昇思MindSpore应用实践基于MindSpore的FCN图像语义分割1、FCN 图像分割简介2、构建 FCN 模型3、数据预处理4、模型训练自定义评价指标 Metrics 5、模型推理结果 Reference 昇思MindSpore应用实践 本系列文章主要用于记录昇思25天学习打卡营的学习心得。 基于MindSpo…

LaTeX教程(014)-LaTeX文档结构(14)

LaTeX教程(014)- LaTeX \LaTeX LATE​X文档结构(14) 2.3.3 multitoc - 将目录设置为多栏 multitoc包的使用方法相当简单,只需要调用这个包,并将要设置为多栏(默认是双栏)的目录指定到包选项中即可。如\usepackage[toc]{multitoc},设置的就是…

Springboot使用WebSocket发送消息

1. 创建springboot项目&#xff0c;引入spring-boot-starter-websocket依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>完整项目依赖 <?xml ver…

Vue 使用 @click 绑定点击事件

https://andi.cn/page/621505.html

Python【打包exe文件两步到位】

Python打包Exe 安装 pyinstaller&#xff08;pip install pyinstaller&#xff09; 执行打包命令&#xff08;pyinstaller demo.py&#xff09; 打完包会生成 dist 文件夹&#xff0c;如下如

基于开源AI数据框架LlamaIndex构建上下文增强型LLA应用

引言 “将你的企业数据转化为可用于实际生产环境的LLM应用程序&#xff0c;”LlamaIndex主页用60号字体这样高亮显示。其副标题是“LlamaIndex是构建LLM应用程序的领先数据框架。”我不太确定它是否是业内领先的数据框架&#xff0c;但我认为它是一个与LangChain和Semantic Ker…

快行线冷链——创新仓配、共赢未来 主题沙龙在京成功举办

2024年7月7日下午&#xff0c;由京营建联盟、北京市大兴区餐饮行业协会、北京快行线冷链物流联合主办的“创新仓配&#xff0c;共赢未来——相信拥抱的力量”主题沙龙活动在北京篝野城市露营空间隆重举行。本次活动定向邀请了餐饮老板、餐饮企业供应链负责人及冻品经销商和相关…

电子电气架构 --- 智能座舱万物互联

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

C语言指针函数指针

跟着这篇文章重新理解了一下&#xff1a;彻底攻克C语言指针 有一个例子感觉可以拿出来看看&#xff1a; char *(*c[10])(int **p); * 这段声明定义了一个长度为10的数组c&#xff0c;数组中的每个元素都是指向函数的指针。每个函数接受一个类型为int **&#xff08;指向指向…

拆分Transformer注意力,韩国团队让大模型解码提速20倍|大模型AI应用开始小规模稳步爆发|周伯文:大模型也有幻觉,全球AI创新指数公布

拆分Transformer注意力&#xff0c;韩国团队让大模型解码提速20倍AI正在颠覆AI上市不到两年&#xff0c;蜗牛游戏可能要退市了&#xff1f;世界人工智能大会结束了&#xff0c;百花齐放&#xff0c;但也群魔乱舞“串联OLED”被苹果带火了&#xff0c;比OLED强在哪里&#xff1f…