问题标签 [class-validator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
386 浏览

node.js - 如何在类验证器模式中传递映射参数

我正在尝试将 map 函数的每个参数传递给 validate 函数,但是 validate 函数中的变量给出了 map 函数的最后一个值

预期输出:

实际输出:

为什么验证两次获得第二个ID?

0 投票
3 回答
30390 浏览

javascript - 在nestjs中使用类验证器验证可选参数?

我想对请求有效负载应用验证,例如,有字符串类型的字段名称。但名称不是必填字段,但如果存在则必须执行@IsNotEmpty()

我试过这样的 @IsNotEmpty() name?: string//它不考虑?可选约束

0 投票
2 回答
7905 浏览

nestjs - 循环依赖试图验证 typeorm 实体

拥有这样的实体:

和一个自定义验证类

以及注入实体存储库的服务

我收到此错误:

因为对于我的验证逻辑,我需要运行一个查询,因此至少注入服务或存储库,我应该如何获得它?

0 投票
1 回答
1991 浏览

typescript - 如何覆盖控制器中的全局 ValidationPipe?

我使用ValidationPipe{ transform: true, whitelist: true }选项的全局变量。但是,在特定的控制器请求中,我想重用相同的类但具有不同的验证,应用类验证器的验证组技术。因此,我有必要覆盖管道的选项以应用新选项。

这是在 NestJS 6.2.4 上。我已尝试在 应用新管道@Query(new ValidationPipe({groups: ['res']})),但仍应用全局管道。我已经应用了相同的逻辑,@UsePipes()但再次应用了全局管道。

此外,我尝试将always: false属性与组一起应用,以避免始终验证属性,但由于这是默认行为,它并没有太大帮助。

0 投票
1 回答
756 浏览

javascript - 验证管道适用于一种值类型,但不能同时使用多种类型

我创建了 3 个从另一个父 DTO 扩展的 DTO,然后在控制器中我使用类验证器库来验证用户传递给控制器​​的数据。

父.dto.ts

a.dto.ts

b.dto.ts

c.dto.ts

在控制器中我正在使用ValidationPipe设置body: A

控制器.ts

这也适用于body: Bbody: C

但是当我这样做时它不起作用body: A | B | C

我怎样才能让它工作,所以代码会是这样的?

0 投票
2 回答
1163 浏览

typescript - 我们如何覆盖 NestJs 中的全局验证管道?

我有一个代码,我在main.ts文件中应用了一个全局验证管道,如下所示:

现在在我的一个控制器中,我想在补丁请求中跳过 DTO 的一些属性,如下所示

这是我的 DTO:

projectDescription如果它没有作为请求的一部分提交,我想忽略它。但在这种情况下,我的全局管道优先,它没有被skipMissingProperties定义为其属性的一部分。是否有覆盖全局管道的解决方案?

0 投票
1 回答
6773 浏览

node.js - 如何确保至少一个字段不为空?(如果只有一个不为空就可以)

我正在为正在处理的 api 编写注册端点,并且正在使用 nestjs 和 class-validator 来验证输入数据。用户可以使用他们的电话号码或电子邮件地址或两者进行注册。因此,为了验证输入,我应该确保至少提供其中一个。但是我很难弄清楚如何做到这一点而不会弄得一团糟。

这是我的 dto:

如您所见,我使用了条件验证,它适用于仅提供电话号码或电子邮件地址之一的情况。但问题是,当两者都提供时,其中一个将不会被验证,并且将允许无效值。

有什么建议么?

0 投票
0 回答
1385 浏览

typescript - 有没有更聪明的方法来使用 NestJS 中的 DTO 访问嵌套属性?

Stripe 发送一个看起来像这样的 webhook

这是我的控制器接收它:

和我现在的 Dto

我想提取出来

data.object.client_reference_iddata.object.customer

我能做到这一点的唯一方法是创建相互嵌套的 3 个 Dto。

我很感激我可以@Body('data')将它缩短到 2 - 但是有没有办法拥有一个 Dto 以便最终数据对象只是:

0 投票
2 回答
2098 浏览

microservices - DTO不适用于微服务,而是直接用于api

我正在用 NestJS 开发 API 和微服务,这是我的控制器功能

当我调用 post api 时,dto 验证工作正常,但是当我使用微服务验证调用它时它不起作用并且它传递给服务而不拒绝错误。这是我的 DTO

当我在没有操作参数的情况下调用 api 时,它显示需要执行错误操作,但是当我使用微服务调用它时

常量模式= {服务:TRANSACTION_SERVICE,味精:'创建'};常量数据 = {id: '5d1de5d787db5151903c80b9', extras:{'asdf':'dsf'}};

它不会抛出错误并开始服务。我还添加了 globalpipe 验证。

它如何适用于 api 和微服务,因为我需要在一个地方并具有相同的功能,以便可以根据客户调用它。

0 投票
1 回答
6929 浏览

nestjs - 使用 class-validator 在 nestjs 中为所需参数添加验证

使用类验证器,验证管道我想根据需要标记一些字段。我尝试使用@IsNotEmpty方法。当输入为空时,它会抛出 400 错误。但是如果输入也丢失,我需要抛出一个错误。

DTO:具有字段地址 1 和地址 2 的地址对象。我希望地址 1 为必需,地址 2 为可选

样本输入:两个字段的样本输入。

在这种情况下,这提供了预期的 400,但是当输入如下所示时,我也需要一个错误,缺少一个必填字段,