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 管道实现数据验证和转换
|
6月前
|
Unix Linux Python
`subprocess`模块是Python中用于生成新进程、连接到它们的输入/输出/错误管道,并获取它们的返回(退出)代码的模块。
`subprocess`模块是Python中用于生成新进程、连接到它们的输入/输出/错误管道,并获取它们的返回(退出)代码的模块。
|
6月前
|
Python
`cmd`模块是Python标准库中的一个模块,它提供了一个简单的框架来创建命令行解释器。
`cmd`模块是Python标准库中的一个模块,它提供了一个简单的框架来创建命令行解释器。
|
6月前
|
Unix Linux Python
`subprocess`模块允许你启动新的应用程序,连接到它们的输入/输出/错误管道,并获取它们的返回码。
`subprocess`模块允许你启动新的应用程序,连接到它们的输入/输出/错误管道,并获取它们的返回码。
|
8月前
|
监控 安全
管道的三种使用方案中,唯一正确而安全的使用方法
管道的三种使用方案中,唯一正确而安全的使用方法
28 0
|
8月前
19_管道——验证DTO
19_管道——验证DTO
62 0
|
8月前
|
Linux Shell
使用输入输出重定向与管道命令——管道
使用输入输出重定向与管道命令——管道。
57 0
|
测试技术 数据库
如何用nest中对环境变量等文件进行配置
如何用nest中对环境变量等文件进行配置
|
设计模式 数据处理 Scala
利用Actor实现管道过滤器模式
利用Actor实现管道过滤器模式
利用Actor实现管道过滤器模式
|
测试技术 Python
python接口自动化(二十六)--批量执行用例 discover(详解)
我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到 unittest 里面的 discover 方法来加载用例了。加载用例后,用 unittest 里面的 TextTestRunner 这里类的 run 方法去一次执行多个脚 本的用例。那么前边介绍那么多都是半道开始,半道出家,这篇就带大家从头到尾,一步一步给小伙伴们详细介绍一下。
270 0
python接口自动化(二十六)--批量执行用例 discover(详解)

热门文章

最新文章

下一篇
开通oss服务