问题标签 [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 投票
5 回答
4201 浏览

mongodb - ParseObjectIdPipe 用于 MongoDB 的 ObjectID

我想用 TypeORM 和 MongoDB 创建一个 NestJs API。我的实体 id 字段的类型为ObjectID. 控制器路由应该在将传入的 id 传递给服务之前验证它们。我知道 Nest 附带 ParseIntPipe 和 ParseUUIDPipe 但据我所知,我没有什么可以用于 MongoDBs ObjectID

因此,我为这些字段创建了自己的管道,如此处所述https://docs.nestjs.com/pipes#transformation-use-case

并希望这能解决问题,即使是边缘情况。我可以将它用于我的路线参数,例如

我遇到的问题是某些路线需要Body验证。我使用这里描述的类验证器包

https://docs.nestjs.com/techniques/validation

似乎我必须为这些ObjectID字段创建自己的类验证器装饰器,但这应该没问题。也许我会在这里找到一些关于如何做到这一点的东西https://github.com/typestack/class-validator#custom-validation-classes。但是如何将这些字段转换为类型ObjectID?我以后也可以使用自定义管道吗?


更新:

我还尝试通过 class-transformer 包转换值。所以这个代码是

不幸的是,价值bar总是undefined。但也许这段代码可能有助于验证和转换目的......

0 投票
1 回答
2735 浏览

typescript - 类验证器忽略嵌套对象

我正在为我的项目使用 NestJs 框架。在我的控制器中,我接受 POST 请求,并通过 ValidationPipe 将 body 转换为我的 CreateHouseDTO。ValidationPipe 正在使用白名单和转换。

当我像这样尝试使用 JSON 的 api 时:

这是我的应用程序日志(console.log 输出):

当我在嵌套对象中犯一些错误时,它甚至会验证嵌套对象。例如,如果我将Floor对象中的name属性设置为Null或不带引号的某个数字。

这是一个错误还是我做错了什么?请帮我。

我的代码:

0 投票
1 回答
2128 浏览

typescript - 在nestjs中具有嵌套对象数组的类验证器

我正在尝试验证 nestjs 中的嵌套对象数组,它工作正常。但是,如果我发送非数组值(如字符串或 null),则会出现错误:

TypeError: Cannot read property 'length' of undefined.

嵌套字段:

在验证嵌套对象之前如何验证该值是一个数组?

版本:

0 投票
1 回答
408 浏览

nestjs - 如果为假,则转换值

我正在使用class-validator包验证我的 DTO。我通过

在我的 main.ts 文件中,如文档中所述

https://docs.nestjs.com/techniques/validation#transform-payload-objects

我的 DTO 中有一个可选的配置字段。如果该字段不存在,则应将其转换为空对象。这里描述了转换装饰器

https://docs.nestjs.com/techniques/serialization#transform

我希望提出这个解决方案:

当我调用我的 API 路由时

有一个空的身体,所以没有这个领域configuration我的MyDTO实例是

虽然我希望它是

有什么问题或我错过了什么?我尝试调试代码,但它从未达到转换功能。所以@Transform不会触发。


更新

看来我必须这样做

如果您传入一个空正文,则将使用初始值。仅当您传入该字段但为其分配一个类似的值时,转换才会运行null

0 投票
6 回答
21010 浏览

typescript - 在 TypeScript 中使用 `class-validator` 确认密码

今天,我试图弄清楚如何在应用程序的后端(NestJS)中验证注册表单。我只是想知道是否存在一种验证passwordpasswordConfirm匹配的方法,使用class-validator包来构建自定义验证器或利用提供的验证器。我正在考虑一个类验证器,而不是一个字段。

你有什么建议?

0 投票
2 回答
11863 浏览

nestjs - 禁止 Nestjs 中 DTO 的特定枚举值

我的“AppState”枚举具有以下可能的枚举值:

我有一个UpdateAppStateDTO,它应该接受除RUNNINGappState之外的每个枚举值。

对于路线,我有这个例子

如果请求有一个空的正文或一个无效的枚举值,比如“foobar”,appState我得到一个 400,这很好。

问题是当我发送“RUNNING”时,我仍然得到 200 而不是 400。

我怎样才能防止这种行为?

0 投票
1 回答
849 浏览

typescript - 类验证器是如何工作的?

我有带有服务器和客户端的 NestJs 的应用程序,在服务器端我ValidationPipe在 DTO 类上使用和使用装饰器,例如

一切正常,但是在客户端我不能使用带有装饰器的类(它的严格规则),我只需要像这样使用它type,-const search: SearchDto = await...

class-validator( class-transformer) 在没有结束的情况下如何工作ValidationPipe?它是像在服务器端一样包装还是完全忽略?它会调用__decorate并将其放入 js 包中吗?

否则我需要编写这样的接口

感谢帮助

0 投票
2 回答
981 浏览

node.js - 未找到元数据。可能安装了不止一次的类验证器版本。你需要扁平化你的依赖

当我运行这个命令时curl -vd '{"NickName":"Marry","Password":"pwd"}' -H "Content-type: application/json" http://127.0.0.1:3000/signin,我 No metadata found. There is more than once class-validator version installed probably. You need to flatten your dependencies.在服务器端打印,并且validate没有正确执行。在这之前,我npm install有一些依赖:

有人可以帮忙吗?我该如何解决这个问题?谢谢!

0 投票
2 回答
5315 浏览

nestjs - 类验证器似乎在 NestJS 应用程序中没有做任何事情

我正在设置一个新的 NestJS 应用程序,并且我刚刚添加了 class-validator 以验证控制器输入,但它似乎被完全忽略了。这是 DTO:

这是控制器:

我希望代码会引发验证错误并且永远不会命中方法本身,而是会遇到异常,并且对象会完全按照进入的方式记录。

包.json:

我在这里想念什么?

更新 我做了一点调试,我可以告诉它哪里出错了,即使我仍然不知道为什么。

在 ValidationPipe.transform 方法中,它返回原始输入,因为元类型未定义:

0 投票
0 回答
2053 浏览

node.js - 有没有办法使用类验证器实现文件上传验证?

我正在使用类验证器来验证数据,我需要为文件上传实现验证。例如:文件不为空(如果还实现文件必须是图像,那就太好了)。

我尝试以下方式:

但即使我选择文件,它总是返回“文件不应为空”。有什么方法可以实现文件上传的验证。

提前致谢 :)