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

nestjs - Class-Transformer:访问请求对象还是传入额外的元数据?

我需要在响应中转换一些文件 URL,文件路径需要包含客户端 ID,

我有一个共享类“AssetReponseImagesDTO”,它在许多其他类中使用,我需要将filename本地路径的值转换为附加 CDN URL 和客户端 ID 并返回正确的 URL

我可以从 configService 获取 CDN URL,因为它只是一个字符串,以获取ClientId我有一个用于 nest.js 的自定义装饰器的值 - 尝试使用此装饰器访问响应中的相同 ID,但它不起作用 -似乎只是返回一个实际函数的字符串

我还尝试ClientId在我的顶级响应 DTO 上创建一个新属性,但是较低级别的类型,例如AssetResponseImagesDTO无法访问父级的属性(除非我弄错了?)

有没有办法将附加信息传递给类转换器,然后可以在转换过程中引用?

更新了更多细节

顶层响应 DTO

资产响应DTO

ClientId 装饰器

0 投票
1 回答
313 浏览

mongodb - 使用nestjs在mongodb中保持时区偏移的时间

我有一个nestjs 应用程序,它的模式非常繁重。据我了解,日期存储在没有时区的 mongo 中。我的 API 接受带有时区偏移的 ISO 格式的时间。

插入以下对象{"date": "2009-06-30T18:30:00+11:00"}

将在 mongo 数据库中生成以下文档{date: ISODate('2009-06-30T07:30:00.000Z'), _id: "..."}

所以时区偏移量丢失了。

有没有一种优雅的方法来保持时区偏移量并在 GET 请求中提供具有相同偏移量的 ISO 字符串?也许利用类转换器并将偏移量存储在单独的属性中?如果是,如何?

这是涉及的课程。(这里没有显示 GET 请求的专用 ItemDto。)

Dto:

架构:

0 投票
0 回答
258 浏览

class-validator - 如何使用类验证器有条件地验证子 DTO?

我正在尝试使用类验证器有条件地验证嵌套 DTO,但 @ValidateIf 似乎没有正确应用并且始终验证嵌套类。

我有以下 DTO:

假设正在验证的对象是:

虽然我应该没有错误,但我没有收到任何错误,因为我已经使用以下标志设置了验证器:

我期望验证器不允许子对象存在并引发错误。

0 投票
0 回答
98 浏览

validation - 嵌套对象的类转换器类型装饰器问题

我对 class-trasnforer 或 class-validator 有一些奇怪的问题。我想通过 ValidationPipe 从发布请求中验证正文。Body Schema 应如下所示:

}

我想验证此对象中的所有字段 - 包括嵌套对象,如“承包商”、“费用”、“收入”。所以我使用了@type 装饰器,但我遇到了一个错误: invoiceValidation_decorator_1.IncomeSoldValidator is not a function 但是!承包商字段与收入和费用具有相同的代码,但即便如此,收入和费用也会返回错误。有谁知道发生了什么?github要点:https ://gist.github.com/Chester97/0f5fecc8d25b55e59e2f25328a60f13e

0 投票
1 回答
4735 浏览

javascript - 如何使用类转换器将 typescript 类转换为纯 javascript 对象

我的 Angular 应用程序中有一些打字稿类实例,我必须保存到 firebase。Firebase 不支持自定义类,所以我发现了这个:https ://github.com/typestack/class-transformer这似乎很适合我。

所以现在我正在创建我的对象,并尝试转换它。

这是我的对象。

我正在创建一个“旅行”并尝试对其进行转换:

但我明白了:

我刚刚创建的对象: 在此处输入图像描述

我想要么我的对象处于不正确的状态,要么我的定义很差,但我找不到什么?

0 投票
1 回答
228 浏览

typescript - 为什么 class-transofrmer 演示中没有初始化程序或类构造函数?

这是class-transformer 文档中的演示。这是我的问题:不是User无效的 Typescript 类,因为它没有任何属性或构造函数的初始化程序吗?其实我把这个demo复制到IDE后,马上就ts(2564): Property 'id' has no initializer and is not definitely assigned in the constructor报错了

0 投票
2 回答
3246 浏览

json - 如何防止我的对象的某些字段被类转换器转换

我正在尝试使用库class-transformerhttps://github.com/typestack/class-transformer)将 typescript 类序列化为不接受海关类型的 firebase。

问题是某些数据实际上是与 firebase 兼容的数据,例如 GeoPoint 格式的“坐标”。

我有这个类被序列化:

我想防止“坐标”字段被转换。它应该存在,而不是未转换。

我尝试使用@Transform(({value})=>...),但它似乎只是一个“附加”转换,它不允许我保持相同的格式。

我也尝试过Exclude,但是该字段不再存在。

有没有办法用这个库来完成这个?

0 投票
0 回答
177 浏览

nestjs - NestJS 将实体数组转换为 dto

我从这个答案https://stackoverflow.com/a/53385010/6578441中使用了 TransformInterceptor 。它工作得很好。

Bud如何将实体数组转换为dto?

控制器:

ArrayDto:

ItemDto:

预期输出:

实际输出:

谢谢你的帮助

0 投票
1 回答
559 浏览

nestjs - NestJS 使用类转换示例验证标头

我正在尝试验证请求的标头是否包含一些特定数据,并且我正在使用 NestJS。我找到了这个信息。虽然这是我想要做的,而且看起来很合适,但 ClassType 引用不存在,我不确定要改用什么。

从示例中,装饰器指的是。

请求标头.decorator.ts

0 投票
1 回答
889 浏览

typescript - TypeScript:如何通过类转换器序列化和反序列化具有不同名称的对象

我有财产的User对象firstName。我想反序列化它,first_name但将它序列化为firstName.

我的打字稿代码:

现场演示

我想classToPlain将属性序列化为firstName. 使用 double@Expose忽略第二个:

有没有办法序列化/反序列化具有不同属性名称的对象?