问题标签 [class-transformer]

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 回答
2315 浏览

serialization - 类序列化在nestjs中不起作用

我有一个简单的用户模型,我想从中排除密码。使用官方文档在此处回答我已经尝试使其工作,但这似乎不起作用,因为我得到了这样的回应。

这是我的模型。我正在使用Typegoose,但情况Mongoose也是如此。

我的用户服务

和用户控制器

我尝试使用此处描述的自定义拦截器,但这不起作用,因此我将其更改为此处给出的以下代码

现在它正在工作,但代码不是通用的。有什么办法让它通用吗?

0 投票
0 回答
442 浏览

class-transformer - 为什么 plainToClass 不会抛出无效的输入类型

例子:

然后result是输入字符串'not a class'

我希望plainToClass

  • Test返回所有属性未定义的类型实例,或
  • 抛出异常

这是一个错误还是我错过了什么?

我还发现无法按预期进行这项工作。

现在的解决方法是显式类型检查并输入我自己的代码:

使用类转换器 0.2.3

0 投票
0 回答
517 浏览

node.js - 如何在类验证器和类转换器中验证和转换数字数组或数字数组

我有需要验证和转换数字数组或数字数组数组的值联合类型的情况。我试过在下面使用鉴别器,但它对非对象类型没有意义。坐标应该能够包含Array<number> | Array<Array<number>>.

知道如何在类验证器和类转换器中实现这一点吗?

0 投票
2 回答
3173 浏览

typescript - plainToClass 不会将日期转换为字符串

根据文档Date对象应转换为string

请注意,当您尝试将类对象转换为普通对象时,日期将被转换为字符串。

我的带有类转换0.2.3器的示例代码无法按预期工作:

这会打印object到控制台,但我希望string.
我错过了什么?

0 投票
2 回答
9995 浏览

typescript - 在 TypeScript 和 NestS 中将类转换为类/对象(实体到 DTO)

如何转换数据库实体User

进入 DTO 实体GetUserDTO

在打字稿中?我正在使用@nestjs,class-validatorclass-transformer包,但我没有找到任何方法来使用它们来实现这一点。

有人可能会说,拥有 DTO 对此毫无意义,但我们在服务器和客户端之间共享 DTO 以维护 API 结构。

有任何想法吗?

0 投票
1 回答
713 浏览

javascript - Nestjs graphql 场守卫

我正在尝试为 graphql 领域做角色保护。像这样的东西:

目标是,如果用户没有所需的角色,则该字段将被发送到带有null值的客户端。

我发现我应该使用class-transformer,但我还没有找到任何 Nestjs 的例子。我还查看了nestjs 文档,但只有内置装饰器的示例,它们没有用于ObjectType.

我会使用授权装饰器,但我需要访问 nestjs 上下文来获取 userId,但我还没有找到方法。

你现在有一些例子或方法吗?

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 投票
1 回答
4871 浏览

javascript - 如何在 TypeScript 中使用“class-transformer”将 API 请求的响应转换为类实例?

我有Request(method: HttpMethod, url: string, ...)调用 API 的正常方法。我正在使用打字稿。

我需要将此 API 请求的响应转换为有class-transformer(或没有它:D)的类实例。

例子:

我知道我不能像这样使用泛型:

泛型不是那样工作的,但我可以这样做:

但这也行不通。我仍在user输入:

我做错了什么?

0 投票
1 回答
117 浏览

node.js - 从 JSON 创建 TS 类实例时是否可以处理未知属性?

在将普通对象从 JSON 转换为类实例时,我需要一种方法来捕获没有相应类属性的所有属性并将它们存储在某个位置(以下示例中的附加数据)。

我查看了一些库(class-transformermarshal.tsTypedJSON),但似乎没有办法做我想做的事。

下面是我想要实现的假设示例(它使用类转换器,但任何其他反序列化器库都可以为我工作)

这是我希望此脚本输出的内容:

0 投票
1 回答
849 浏览

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

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

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

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

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

感谢帮助