Nestjs基础

news/2024/7/16 5:52:55 标签: nestjs, 后端, node.js

一、创建项目

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.niftyadmin.cn/n/5542885.html

相关文章

比较链表和数组在数据结构中的优缺点和适用场景。

在数据结构中,链表(Linked List)和数组(Array)是两种基础且广泛使用的数据结构,它们各有其独特的优缺点,适用于不同的场景。下面从技术难点、面试官关注点、回答吸引力及代码举例四个方面详细阐…

数据库SQL Server常用操作:增删改查

文章目录 SQL Server主要特点 常见数据库操作假设tmall_scapler_item_pk是一个主键约束临时表表的连接 SQL Server SQL Server 是由微软(Microsoft)公司开发的一个关系数据库管理系统(RDBMS)。它允许企业或组织存储、检索、修改和…

机器学习Day12:特征选择与稀疏学习

1.子集搜索与评价 相关特征:对当前学习任务有用的特征 无关特征:对当前学习任务没用的特征 特征选择:从给定的特征集合中选择出相关特征子集的过程 为什么要特征选择? 1.任务中经常碰到维数灾难 2.去除不相关的特征能降低学习的…

【Android】【WIFI】检查 SDIO 设备的状态

检查 SDIO 设备的状态 要检查 Android 设备上 SDIO 设备的状态,可以使用 ADB 命令来获取系统信息。以下是一些示例命令: 列出 SDIO 设备 adb shell cat /proc/devices | grep sdio检查 SDIO 模块是否加载 adb shell lsmod | grep sdio获取 SDIO 相关的…

zabbix 与 grafana 对接

一.安装 grafana 1.初始化操作 初始化操作 systemctl disable --now firewalld setenforce 0 vim /etc/selinux/config SELINUXdisabled 2.上传数据包并安装 cd /opt grafana-enterprise-9.4.7-1.x86_64.rpm #上传软件包 yum localinstall -y grafana-enterprise-9.4.7-1…

【JVM基础篇】Java的四种垃圾回收算法介绍

文章目录 垃圾回收算法垃圾回收算法的历史和分类垃圾回收算法的评价标准标记清除算法优缺点 复制算法优缺点 标记整理算法(标记压缩算法)优缺点 分代垃圾回收算法(常用)JVM参数设置使用Arthas查看内存分区垃圾回收执行流程分代GC算…

拖动未来:WebKit 完美融合拖放API的交互艺术

拖动未来:WebKit 完美融合拖放API的交互艺术 在现代网页应用中,用户体验的重要性日益凸显,而交互性则是提升用户体验的关键因素之一。WebKit 作为先进的浏览器引擎,其对拖放API(Drag and Drop API)的支持为…

SHAP(SHapley Additive exPlanations)基于XGBoost模型的可解释机器学习

模型可解释性 这是一个关于错误解释机器学习模型的危险以及正确解释它的价值的故事。如果您发现诸如梯度提升机或随机森林之类的集成树模型的鲁棒准确性很有吸引力,但也需要解释它们,那么我希望您发现这些信息有用且有帮助。 试想一下,我们…