我\xe2\x80\x99m尽我所能地问这个问题\xe2\x80\x99t似乎得到了一个直接的答案。
\n因此,NestJS 有一种非常优雅的方法来使用装饰器来处理验证。也就是说,您可以使用所需的属性定义 DTO 类,并使用类验证器装饰器对它们进行注释。例如,假设我们有一条接受来自联系表单的输入的路线。
\nclass ContactInfoDTO {\n @IsString()\n @IsNotEmpty()\n name: string\n \n @IsEmail()\n email: string\n \n @IsString()\n @IsNotEmpty\n subject: string\n\n @IsString()\n @IsNotEmpty()\n body: string\n\n}\nRun Code Online (Sandbox Code Playgroud)\n这对于验证非常有用。如果我输入无效的电子邮件,它会按预期拒绝它。但是,这里\xe2\x80\x99是我的问题。输入清理怎么样?比如说,我在 body 参数中输入一些 JavaScript?比如说,我的身体看起来像这样:
\nbody: \xe2\x80\x9cHello <script>//some malicious code here</script>\xe2\x80\x9d\nRun Code Online (Sandbox Code Playgroud)\n现在,这个说法仍然被接受。尽管脚本标签没有转换为 HTML 实体,但这确实带来了一些安全风险。
\n所以,我的问题是 NestJS 是否有任何内置的清理机制?有这方面的适当文件吗?因为我不能\xe2\x80\x99t真正找到任何东西,尽管这种事情在网络开发的上下文中非常重要。
\n在 NestJS 中进行输入清理的最佳实践是什么\xe2\x80\x99?
\n我\xe2\x80\x99m对ElasticSearch真的很陌生(一周前才开始使用)。我\xe2\x80\x99m 尝试将其集成到我的 NodeJS 应用程序之一中。I\xe2\x80\x99m 使用此处的指南使用 Typescript 来实现它。
\n\n从这个页面来看,我应该定义自己的对象接口来使用,以便操作没有返回类型any。
我想问一下我\xe2\x80\x99m到底应该如何做呢?我是否需要为我在实现中使用的每种文档类型的请求正文、响应和源定义一个接口?
\n\n例如,我是否需要单独的接口来执行match查询multi_match、响应和源等操作?或者有没有办法定义一个通用接口来与所有人一起工作?
谢谢。
\nI\xe2\x80\x99m 正在尝试学习微服务架构。我对如何使用微服务和网关应用程序进行身份验证和授权感到有点困惑。
\n\n对于这种情况,假设我为电子商务应用程序提供以下服务:\n1。AccountService(管理用户帐户)\n2. 列表服务(管理应用程序上的产品列表)\n3. 购物车服务(管理用户\xe2\x80\x99s帐户中的项目)\n4. 订单服务(管理应用程序上用户订单的处理)。
\n\n从我读过的诸如此类的内容中,总是提到 \xe2\x80\x9cauth 服务器。\xe2\x80\x9d 那么,我的第一个问题是这个身份验证服务器到底是做什么的?它的名字告诉我它对应用程序的用户进行身份验证。但是,这是否意味着该身份验证服务器必须存储用户数据?那么,让存储用户帐户信息的帐户服务同时也是存储有关用户的所有信息的身份验证服务器是否有意义?或者,Auth 服务器是它自己的微服务吗?如果是这样,它存储了哪些关于用户的信息而帐户用户没有存储?我是否应该将网关应用程序设置为身份验证服务器,因为所有请求都必须通过它?
\n\n我的第二个问题与微服务之间的授权有关。具体来说,它是如何工作的?根据我的研究,这似乎是通过存储权限的令牌来完成的。对于许多技术堆栈(无论是 PHP\xe2\x80\x99s Laravel、Adonis、Java Spring 等框架的 Javascript),OAuth 包通常都可以广泛使用。所以,我想隐藏内部工作原理的包会让我感到困惑。但是,无论如何......根据我的研究,标准做法似乎是让 OAuth 服务器(再次回答第一个问题,无论其真正含义是什么)处理身份验证,而各个微服务处理授权。具体来说,这是通过包含权限的令牌来完成的。那么,微服务如何准确验证这些权限呢?
\n\n我是否只在各个包中安装相同的 OAuth 包并使用它们的授权功能?但是,\xe2\x80\x99 是否会将服务与该技术结合起来,这违背了微服务的理念?或者,我是否也对网关应用程序进行授权,并让其他微服务只是资源存储库,因为无论如何公众都无法直接访问它们(假设其已 Docker 化)?或者其他方式?
\n\n再次感谢您的帮助。同样,我仍在尝试了解微服务架构。所以,如果这些问题听起来太微不足道或太愚蠢,我很抱歉。:)
\n我正在使用json_serializable、json_annotation和 build 来serialization/deserialization为我的模型生成功能。当我运行构建时,我收到此错误。
运行 JsonSerializedGenerator 时出错无法填充所需的构造函数参数:已创建。包:explorer/models/Account/account.dart:46:3
它所指的行是我的模型构造函数,就是这个。
Account(String id, String firstName, String lastName, String email,
DateTime dob, DateTime created, DateTime updated,
{String accessTkn, String refreshTkn}) {}
Run Code Online (Sandbox Code Playgroud)
为什么我会收到此错误?
根据要求,这是我的模型类。
import "package:json_annotation/json_annotation.dart";
part "account.g.dart";
@JsonSerializable(nullable: true)
class Account {
@JsonKey(name: "id")
String _id;
@JsonKey(name: "first_name")
String _firstName;
@JsonKey(name: "last_name")
String _lastName;
@JsonKey(name: "email")
String _email;
@JsonKey(
name: "dob", fromJson: _isoStringToDateTime, toJson: _dateTimeToIsoString)
DateTime _dob;
@JsonKey(
name: "created",
fromJson: _isoStringToDateTime,
toJson: _dateTimeToIsoString)
DateTime _created;
@JsonKey(
name: "updated", …Run Code Online (Sandbox Code Playgroud) 我已经使用 NestJS 玩了大约一个星期。到目前为止,我真的很喜欢它。模块系统很棒。而且,我喜欢做解析请求之类的事情是多么容易。
我确实有一个问题是关于 NestJS CLI。
假设我有多个模块。我可以使用以下命令创建一个控制器。
nest g controller Accounts
Run Code Online (Sandbox Code Playgroud)
如何指定此控制器属于哪个模块?
CLI 似乎默认为您创建的最后一个模块。
我该如何改变这种行为?
我\xe2\x80\x99m 在 NestJS 和 TypeORM for MongoDB 中出现这种奇怪的行为。
\n\n当我使用 创建新实体时this.repo.save(newEntity);,数据将保存到 MongoDB。但是,我也收到错误cannot read property \xe2\x80\x9ccreateValueMap()\xe2\x80\x9d of undefined.。
有针对这个的解决方法吗?
\n