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

相关文章
|
7月前
|
人工智能 异构计算
从帧到世界:面向世界模型的长视频生成
《从帧到世界》介绍面向世界模型的长视频生成新范式MMPL,由南京大学范琦团队提出。该方法通过“微观规划+宏观规划”双阶段策略,解决传统生成中的时域漂移与串行瓶颈,实现高物理合理性、强时空连贯的长视频生成,支持并行加速,为世界模型提供认知与预测世界的AI基础设施。
440 1
从帧到世界:面向世界模型的长视频生成
|
7月前
|
NoSQL IDE MongoDB
Studio 3T 2025.21 发布 - MongoDB 的终极 GUI、IDE 和 客户端
Studio 3T 2025.21 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
294 2
Studio 3T 2025.21 发布 - MongoDB 的终极 GUI、IDE 和 客户端
|
人工智能 测试技术
LIMO:上海交大推出高效推理方法,仅需817条训练样本就能激活大语言模型的复杂推理能力
LIMO 是由上海交通大学推出的一种高效推理方法,通过极少量的高质量训练样本激活大语言模型的复杂推理能力。
767 11
|
12月前
|
存储 人工智能 安全
5款值的推荐的高效工具软件
本文介绍了五款实用工具软件:矢量设计工具Affinity Designer、数字绘画软件Sketchable、在线AI工具箱3171.CN、密码管理工具KeePassX及效率搜索软件Listary,涵盖设计、办公、安全与系统效率提升,助力高效工作。
675 0
|
存储 缓存 自然语言处理
SCOPE:面向大语言模型长序列生成的双阶段KV缓存优化框架
KV缓存是大语言模型(LLM)处理长文本的关键性能瓶颈,现有研究多聚焦于预填充阶段优化,忽视了解码阶段的重要性。本文提出SCOPE框架,通过分离预填充与解码阶段的KV缓存策略,实现高效管理。SCOPE保留预填充阶段的关键信息,并在解码阶段引入滑动窗口等策略,确保重要特征的有效选取。实验表明,SCOPE仅用35%原始内存即可达到接近完整缓存的性能水平,显著提升了长文本生成任务的效率和准确性。
902 3
SCOPE:面向大语言模型长序列生成的双阶段KV缓存优化框架
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
478 1
|
负载均衡 网络协议 网络架构
静态路由 及其 实验操作
静态路由 及其 实验操作
|
Linux
Linux 驱动开发基础知识—— LED 驱动程序框架(四)
Linux 驱动开发基础知识—— LED 驱动程序框架(四)
440 0
Linux 驱动开发基础知识—— LED 驱动程序框架(四)
|
安全 Cloud Native 网络安全
如何使用SASE快速构建零信任架构
企业构建零信任架构已经成为近年热门的话题之一。本质都是保护企业核心数据安全,防止未经合法授权的数据的访问行为。阿里云SASE依托于阿里云的网络组网优势,为用户提供一个稳定、高效的SD-WAN组网及接入能力,与此同时叠加安全能力。
2976 1
如何使用SASE快速构建零信任架构
|
SQL 存储 消息中间件
小米基于 Flink 的实时数仓建设实践
本次分享围绕小米在实时数仓方面的探索与实践展开,主要涉及:Flink+Iceberg 实时数仓架构升级,稳定性与实时性优化;基于当前 Flink 实时数仓的不确定性问题,介绍 Merge into 功能和算子级状态清理的解决方案。
8590 0
小米基于 Flink 的实时数仓建设实践

热门文章

最新文章