nest管道验证

简介: nest管道验证

使用场景

当我们发送请求,请求数据库里面的数据时,如果我们想根据id来获取相应的数据,但是我们的路由动态参数string类型,而数据库里面的id都是int 或者bigint整形,在ts强类型的作用下,必然导致请求失败,这个时候就得对请求的数据做处理,这里以两个场景为例,加深大家对管道的理解和使用。


场景一

我们先起一个服务


image.png

image.png    


可以看到这个1其实是一个string类型的,不妨请求下数据库看一下,这里以prisma ORM为例 连接mysql之后 先在表中添加了一条数据


image.png

image.png


image.png


发现这里报错是因为我们传入的id是string类型,而表里的是int类型对应不上


来看看解决办法


第一种解决办法

用Number(id)强制转化为数字类型


image.png


第二种解决办法

用管道来处理了 在命令行使用nest g pi 文件名      --no-spec是不生成测试文件


image.png

image.png

value是我们要处理的数据,medata是元信息,我们可以看看里面都有什么 在打印之前需要在要用管道的位置引进去

image.png

image.png


image.png


报错就先不管,因为我们在管道还没有做任何处理,可以看到value和medata的结果,这样就可以写逻辑


image.png

image.png


可以看到我们已经成功获取到了数据,这个管道是我们自己写的,其实在nest中他为我们内置好了9大管道 感兴趣可以看看https://docs.nestjs.com/pipes#pipes 我们来介绍其中的一种和我们自己封装的效果一样


image.png


ok,第一个场景我们就介绍完了,再看看第二个,表单的验证,这个应用很广泛,我们来看看。


场景二

先创建一个post请求


image.png


image.png

我们需要对上传的数据进行验证 比如空值或者字段长度,敏感字等


image.png


这样我们对空值进行了一个验证,但是这样如果表中的数据很多,就会显得很冗余,达不到复用的效果,我们来优化一下。 先安装一下这两个包


image.png


我们再src下面创建一个dto文件夹专门存放验证规则的文件 这里的class-validator里面有很多装饰器能供我们使用,这个包在nest官网看不到,只能在github上搜,里面有详细用法


这里的IsNotEmpry为我们实现了空值验证, 接着我们在管道中使用一下


image.png

image.png


image.png

我们测试一下

image.png


image.png


可以看到我们获取了错误信息,我们可以自定义错误的信息


image.png


我们来对数据库发起post请求


image.png

image.png

image.png


发现我们的效果已经实现了,并且封装的管道能够捕捉每个错误的内容,并且将结果返回,很方便我们找到报错的地方。


我们正常请求  


image.png

image.png


写在最后

nest的管道还有很多知识,多看官网文档,多敲代码,知识点很多,慢慢吸收,消化,希望这个管道的验证知识点能够帮到大家!

相关文章
|
5月前
|
数据处理 开发者 数据格式
Nest.js 实战 (四):利用 Pipe 管道实现数据验证和转换
这篇文章介绍了Nest.js框架中管道的概念和使用。管道是一种强大的功能,用于在请求数据到达控制器方法之前对其进行预处理,如转换、验证、清理等。文章详细解释了数据转换、数据验证、错误处理和一致性等管道的主要用途,并通过代码示例演示了如何使用内置管道和自定义管道。最后,文章总结了管道在提升应用健壮性和安全性方面的作用,认为合理利用管道可以加速开发周期,提高软件质量。
Nest.js 实战 (四):利用 Pipe 管道实现数据验证和转换
|
2月前
|
中间件 Go 数据处理
应用golang的管道-过滤器架构风格
【10月更文挑战第1天】本文介绍了一种面向数据流的软件架构设计模式——管道-过滤器(Pipe and Filter),并通过Go语言的Gin框架实现了一个Web应用示例。该模式通过将数据处理流程分解为一系列独立的组件(过滤器),并利用管道连接这些组件,实现了模块化、可扩展性和高效的分布式处理。文中详细讲解了Gin框架的基本使用、中间件的应用以及性能优化方法,展示了如何构建高性能的Web服务。
88 0
|
4月前
|
SQL JavaScript 前端开发
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
|
4月前
Mockjs——fetch请求如何使用mockjs来模拟数据
Mockjs——fetch请求如何使用mockjs来模拟数据
112 0
|
5月前
|
API
Nest.js 实战 (一):使用过滤器优雅地统一处理响应体
这篇文章介绍了在Nest.js中如何处理接口统一返回格式的方法。首先定义了响应状态码枚举和类型,然后创建了HttpException异常过滤器来捕获HttpException类的异常并设置自定义响应逻辑。最后通过全局配置和效果预览展示了如何应用这些设置。
258 0
Nest.js 实战 (一):使用过滤器优雅地统一处理响应体
|
7月前
|
监控 安全
管道的三种使用方案中,唯一正确而安全的使用方法
管道的三种使用方案中,唯一正确而安全的使用方法
25 0
|
7月前
|
前端开发 JavaScript
前端 JS 经典:函数管道
前端 JS 经典:函数管道
36 0
|
7月前
19_管道——验证DTO
19_管道——验证DTO
61 0
|
Unix Windows
🎖️使用 `package.json` 中的脚本钩子来优化项目工作流程
这些脚本钩子可以使项目的开发、构建和部署过程更加高效和自动化。
233 1
|
JavaScript 前端开发 搜索推荐
Nest项目部署的最佳方式
Nest项目部署的最佳方式
Nest项目部署的最佳方式

热门文章

最新文章