问题标签 [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 回答
1544 浏览

javascript - 无法让 ValidatorPipe 与 nest.js 一起使用

当前行为

当我尝试为请求正文初始化验证管道时,当给出无效类型时没有任何反应。

预期行为

当用户在我的 DTO 中指定一个与类型相反的值时,我会以错误拒绝。在这种情况下,我请求 /test 的主体为

{ "string": true }

我希望这会出错,但事实并非如此。

问题的最小再现

测试 DTO

测试控制器

0 投票
3 回答
49574 浏览

javascript - 使用类验证器和 nestjs 验证嵌套对象

我正在尝试使用类验证器和 NestJS 验证嵌套对象。我已经尝试使用 class-transform 中的装饰器来跟踪这个线程@Type,但没有任何运气。这就是我所拥有的:

DTO:

我也在使用内置的 nestjs 验证管道,这是我的引导程序:

它对其他属性工作正常,对象数组是唯一不工作的。

0 投票
1 回答
3050 浏览

javascript - 不能在具有类验证器的父类的构造函数内使用验证

我想在对象构造函数中使用 validateSync,但我不能将它与继承一起使用。

我有这样的事情:

结果是:

当我调用 Dog 构造函数时,代码会运行 Animal 类的 super() 和 this.validate()。此方法验证 Dog 的实例,并且由于 Animal 没有品种属性,因此代码会抛出上面的错误。

我不知道如何解决这个问题,也许将验证放在构造函数中并不是一个好主意。

是否有解决方法或更好的方法来做到这一点?

0 投票
2 回答
11250 浏览

node.js - NestJS - 基于一个属性有条件地验证身体

我正在尝试找到一种使用 DTO 验证身体的好方法(使用辉煌class-validatorclass-transformer图书馆)。它工作得非常好,即使对于嵌套结构,但在我的情况下,我想拥有基于某些条件的 body 属性。

可能有助于理解的示例:

让我们想象一下我的身体应该一直有selectedCategory。基于该字段,内容可能来自类别 1,其中包含prop1或来自类别 2,其中包含prop2.

我不想让他们两个都为 null,我真的希望必须prop1定义或prop2基于selectedCategory.

我认为我可以使用管道,但是如何指定要使用的正确 DTO?

我已经建立了一个“基”类,它包含所有的公共属性和几个从它继承的其他类。

我可以根据 property 手动实例化管道selectedCategory,这是理想的,但我不知道要传递什么作为管道的第二个参数(元数据)。

谢谢你的帮助。

0 投票
1 回答
2797 浏览

typescript - 如何在 Nestjs 上使用具有多个 dto 的一条路由?

目前我正在使用 NestJS 来构建 restful api。我有ValidationPipe问题。它仅适用于控制器方法,不适用于服务方法。

我需要为每个DTO(管理员UserCreateDTO、员工、用户)在.StaffCreateDTOROLEroute

0 投票
3 回答
5715 浏览

node.js - 如何在更新mongodb中的现有行时防止nestjs中客户端不需要的对象属性

创建新用户将忽略未指定的对象create-user.dto.ts

但是,当我更新用户时,它会添加不需要的字段,如下所示:

这是来自用户服务的更新操作

这是 user.controller.ts

客户端补丁数据:

email正确更新,但该行将有一个新的不需要的属性junk,其值为junk

0 投票
3 回答
8835 浏览

node.js - 验证类验证器中的空白空间

我想验证地址字段,它可能包含数字或字符串,但它不应该接受连续的空格

@IsAlphaNUmereic() 地址:字符串;

我想要那个,地址可以是数字或字母......但它不应该接受连续的空格

0 投票
2 回答
775 浏览

javascript - 是否可以验证单个路由参数?

假设我有以下路线:

是否可以分别验证两个资源 id ( companyId, departmentId)?我试过跟随但它不起作用。

当单个路由中有多个参数时,我有多种情况。我不想为每条路线创建单独的验证类。有没有办法以不同的方式处理这个问题?

0 投票
1 回答
4313 浏览

javascript - ValidationPipe() 不适用于覆盖 Nestjs/Crud 中的 @Query

我正在尝试验证 get 请求查询中的参数,但由于某种原因,验证管道无法识别查询的元素。

OpenSchedule.dto

当我向http://localhost:3000/schedules?companyId=3&professionalId=1发出获取请求时

我收到意外错误:

0 投票
3 回答
8701 浏览

javascript - 找不到类验证器的元数据

我正在尝试使用 aValidationPipe但无论我如何编写代码,在发送请求时都会收到以下警告:No metadata found. There is more than once class-validator version installed probably. You need to flatten your dependencies.

我的路线看起来像这样:

我的 DTO 看起来像这样:

我尝试使用ValidationPipe几种方法,遵循doc,但对我没有任何作用。我知道它不起作用,因为尽管请求得到了响应,但是当查询为空时,不使用我在 DTO 中为 property 编写的默认值,limit即。50因此,当limit查询中提供 no 时,limit' 的值是未定义的,而它应该是50(这意味着ValidationPipe未使用)。

我的package.json似乎是正确的:

完整package.json

为什么我会收到此消息,我该如何使用ValidationPipe