热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

nestjs上的强参数

您是Nestjs和ts的新手,我正尝试使用nestjs进行用户注册,并且工作正常,dto看起来就像

您是nestjs和ts的新手,我正尝试使用nestjs进行用户注册,并且工作正常,dto看起来就像一种将数据从Web传输到nest上任何数据源的方式。

问题是我有一个具有2个字段登录名和密码的dto,而我的数据库模式具有3个登录名,密码和admin(boolean)。

如果我提出请求并验证此登录名和密码,并且它们很好,我将其保存到数据库中,直到现在都没问题。

问题是,如果我通过DTO,并且我将管理数据真实传递给数据库,那么我知道我必须负责并将其从对象中删除,但是我有点担心这是默认行为因为这很容易导致安全漏洞。

我的代码是:


let body = {
login: 'vinicius',password: 'keyboardcat',admin: 'true'
}
// DTO
class Login {
login!: string;
password!: string;
}
let data = body as Login;
console.log(JSON.stringify(data));
// => {"login":"vinicius","password":"keyboardcat","admin":"true"}
// note that the admin is on the object even so its not on DTO
// this destructuring achieves the desired behavior
const { admin,...desiredData } = body;
console.log(JSON.stringify(desiredData));
// => {"login":"vinicius","password":"keyboardcat"} // this is the desired

问题是,你们如何处理?
我的意思是,还有什么更好的方法可以做到这一点,而又不会与每个人使用的默认DTO有太大的偏差?



我认为这就像使用@IsBolean装饰器向类添加参数一样简单

@IsBoolean()
public admin!: boolean;

也许您可以看看类验证器documentation,这是NestJS用来定义DTO的库

编辑:有了您在问题中所做的更改,我现在完全理解DTO部分中的内容,您无法执行计划的工作,因为它就像DTO中操作的蓝图一样,您可以进行一些形式的更改像在操作之前解析字符串或将嵌套对象转换为特定类之类的主体中,根据要添加的复杂性,您可以有两种方法:对象解构(示例中的一种)或创建自定义管道进行了这种转换,我建议您使用解构,但我看不到任何问题。


推荐阅读
  • OpenCV 2.4.9 源码解析:级联分类器的错误率与尺寸分析 ... [详细]
  • Oracle培训(三十七)——深入解析Hibernate第三章:实体关联关系映射详解
    在本节Oracle培训中,我们将深入探讨Hibernate第三章的内容,重点讲解实体关联关系映射的详细知识点。首先,回顾了Hibernate的基本概念和映射基础,随后详细分析了不同类型的实体关联关系,包括一对一、一对多和多对多关系的映射方法及其应用场景。通过具体的示例和代码片段,帮助读者更好地理解和掌握这些复杂的映射技术。此外,还讨论了如何优化关联关系的性能,以及常见的问题和解决方案。 ... [详细]
  • 在编写数据库应用程序时,常常需要用户自己在控制面板中配置ODBC数据源。然而对一般用户而言,配置ODBC数据源的工作是有一定困难的。因此, ... [详细]
  • Dapper:一款高效轻量的ORM框架
    Dapper 是一个高效且轻量级的 ORM(对象关系映射)框架,由 StackExchange 开发并维护。它旨在提供快速的数据访问性能,同时保持代码的简洁性和易用性。Dapper 可以显著提高开发效率,特别适用于需要高性能数据操作的应用场景。更多详细信息可参考其官方文档和 GitHub 仓库。 ... [详细]
  • 本文深入探讨了 AdoDataSet RecordSet 的序列化与反序列化技术,详细解析了将 RecordSet 转换为 XML 格式的方法。通过使用 Variant 类型变量和 TStringStream 流对象,实现数据集的高效转换与存储。该方法不仅提高了数据传输的灵活性,还增强了数据处理的兼容性和可扩展性。 ... [详细]
  • C/C++利用栈和队列实现停车场管理系统【C++教程】
    数据结构的课程设计一般都不是很好理解,今天小编为大家总结了一下c和c++版本的常见栈和队列的的停车场管理程序,需要 ... [详细]
  • CatchThatCowTimeLimit:50002000MS(JavaOthers)MemoryLimit:3276832768K(JavaOt ... [详细]
  • 在 Asp.net 应用中,动态加载 DropDownList 控件的数据源是一项常见需求。本文探讨了如何高效地从数据库中获取数据,并实时更新下拉列表,确保用户界面始终与后台数据保持同步。通过使用 ADO.NET 和 LINQ to SQL 技术,开发者可以轻松实现这一功能,同时提高应用的性能和用户体验。文中还提供了代码示例和最佳实践,帮助开发者解决常见的数据绑定问题。 ... [详细]
  • 本文介绍了一个基于C++标准库实现的INI文件读写操作类。该类在现有网络资源的基础上进行了扩展和优化,增加了获取当前可执行文件路径和宽字节与多字节字符串转换的功能。通过这些增强功能,该类能够更好地适应各种应用场景,提高代码的可移植性和健壮性。具体实现细节请参见 `IniFileSTL.h` 文件。 ... [详细]
  • 本文旨在构建一个JavaScript函数,用于对用户输入的电子邮件地址和密码进行有效性验证。该函数将确保输入符合标准格式,并检查密码强度,以提升用户账户的安全性。通过集成正则表达式和条件判断语句,该方法能够有效防止常见的输入错误,同时提供即时反馈,改善用户体验。 ... [详细]
  • 本文探讨了Node.js Cluster模块在多核CPU环境下的应用及其性能测试。通过安装`async`包并利用Node.js自带的`http`和`cluster`模块,创建了一个名为`cluster.js`的文件,该文件根据系统CPU核心数动态生成多个工作进程,以实现负载均衡和提高应用性能。实验结果表明,使用Cluster模块能够显著提升高并发场景下的响应速度和处理能力。 ... [详细]
  • 本文深入解析了Java编译过程,重点探讨了从源代码到字节码文件的转换机制。通过具体示例,如 `Hello.java` 的编译与反编译过程,详细介绍了 `javap -verbose` 命令的使用方法及其在字节码分析中的重要作用。此外,文章还讨论了字节码文件的结构特点及其在不同应用场景中的实际应用,为开发者提供了宝贵的参考。 ... [详细]
  • 图像拼接技术深入解析:基于OpenCV 3.4的Stitching模块源码分析(下篇)
    本文继续深入探讨图像拼接技术,特别是在OpenCV 3.4的Stitching模块中的源码实现。通过与VLFeat的SIFT实现进行对比,详细分析了OpenCV在图像特征提取、匹配及拼接过程中的关键算法和技术细节,为读者提供了全面的技术解析和实践指导。 ... [详细]
  • 如何在C++中定位数组中特定数字的最后一个位置 ... [详细]
  • 深入解析数据结构与算法:基数排序的原理与应用
    本文详细探讨了基数排序(Radix Sort)的基本原理及其应用场景。作为一种非比较型整数排序算法,基数排序通过将元素按照位数分配到不同的桶中进行排序,最终合并各个桶中的元素得到有序序列。文章首先介绍了基数排序的核心思想和工作流程,随后通过具体代码示例展示了其实现过程。此外,还对基数排序在处理大规模数据集时的性能表现进行了测试,并讨论了在实际应用中需要注意的事项。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有