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

相关文章
|
6月前
|
数据处理 开发者 数据格式
Nest.js 实战 (四):利用 Pipe 管道实现数据验证和转换
这篇文章介绍了Nest.js框架中管道的概念和使用。管道是一种强大的功能,用于在请求数据到达控制器方法之前对其进行预处理,如转换、验证、清理等。文章详细解释了数据转换、数据验证、错误处理和一致性等管道的主要用途,并通过代码示例演示了如何使用内置管道和自定义管道。最后,文章总结了管道在提升应用健壮性和安全性方面的作用,认为合理利用管道可以加速开发周期,提高软件质量。
Nest.js 实战 (四):利用 Pipe 管道实现数据验证和转换
|
3月前
|
中间件 Go 数据处理
应用golang的管道-过滤器架构风格
【10月更文挑战第1天】本文介绍了一种面向数据流的软件架构设计模式——管道-过滤器(Pipe and Filter),并通过Go语言的Gin框架实现了一个Web应用示例。该模式通过将数据处理流程分解为一系列独立的组件(过滤器),并利用管道连接这些组件,实现了模块化、可扩展性和高效的分布式处理。文中详细讲解了Gin框架的基本使用、中间件的应用以及性能优化方法,展示了如何构建高性能的Web服务。
99 0
|
5月前
|
JavaScript 安全 数据安全/隐私保护
深入Node.js与Express:从表单接收到数据验证的完整指南——实战技巧揭秘后端开发中的表单处理流程
【8月更文挑战第31天】在Web开发中,处理表单数据至关重要。本文通过实例详细讲解了如何利用Node.js与Express框架接收和验证表单数据。首先,搭建环境并初始化一个简单的Express应用;接着,演示如何接收用户注册表单中的`username`和`email`字段;最后,引入`joi`模块进行数据验证,确保数据安全准确。掌握这些技能有助于开发者构建更安全、友好的Web应用。随着Node.js和Express的不断进步,未来将有更多高级功能值得期待。
144 0
|
8月前
|
监控 安全
管道的三种使用方案中,唯一正确而安全的使用方法
管道的三种使用方案中,唯一正确而安全的使用方法
28 0
|
存储 安全 Go
Go管道方式
在Go语言中,管道(Channel)是一种用于在不同的goroutine之间进行通信和同步的机制。
95 0
|
SQL JSON 测试技术
Django model层之执行原始SQL查询
Django model层之执行原始SQL查询
138 0
|
测试技术 Python
python接口自动化(二十六)--批量执行用例 discover(详解)
我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到 unittest 里面的 discover 方法来加载用例了。加载用例后,用 unittest 里面的 TextTestRunner 这里类的 run 方法去一次执行多个脚 本的用例。那么前边介绍那么多都是半道开始,半道出家,这篇就带大家从头到尾,一步一步给小伙伴们详细介绍一下。
270 0
python接口自动化(二十六)--批量执行用例 discover(详解)
|
JavaScript
【Vue 快速入门系列】表单数据收集及过滤管道符的使用
【Vue 快速入门系列】表单数据收集及过滤管道符的使用
【Vue 快速入门系列】表单数据收集及过滤管道符的使用
|
安全 测试技术 Python
Tornado框架的异步代码单元支持同步获取URL在项目里实战的心得和方法
Tornado框架的异步代码单元支持同步获取URL在项目里实战的心得和方法
163 0
|
存储 JavaScript 前端开发
企业级项目开发中的交互式解释器以及global全局定义、Stream流的合理运用和实战【Note.js】
企业级项目开发中的交互式解释器以及global全局定义、Stream流的合理运用和实战【Note.js】