问题标签 [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.
nestjs - Class-Transformer:访问请求对象还是传入额外的元数据?
我需要在响应中转换一些文件 URL,文件路径需要包含客户端 ID,
我有一个共享类“AssetReponseImagesDTO”,它在许多其他类中使用,我需要将filename
本地路径的值转换为附加 CDN URL 和客户端 ID 并返回正确的 URL
我可以从 configService 获取 CDN URL,因为它只是一个字符串,以获取ClientId
我有一个用于 nest.js 的自定义装饰器的值 - 尝试使用此装饰器访问响应中的相同 ID,但它不起作用 -似乎只是返回一个实际函数的字符串
我还尝试ClientId
在我的顶级响应 DTO 上创建一个新属性,但是较低级别的类型,例如AssetResponseImagesDTO
无法访问父级的属性(除非我弄错了?)
有没有办法将附加信息传递给类转换器,然后可以在转换过程中引用?
更新了更多细节
顶层响应 DTO
资产响应DTO
ClientId 装饰器
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:
架构:
class-validator - 如何使用类验证器有条件地验证子 DTO?
我正在尝试使用类验证器有条件地验证嵌套 DTO,但 @ValidateIf 似乎没有正确应用并且始终验证嵌套类。
我有以下 DTO:
假设正在验证的对象是:
虽然我应该没有错误,但我没有收到任何错误,因为我已经使用以下标志设置了验证器:
我期望验证器不允许子对象存在并引发错误。
validation - 嵌套对象的类转换器类型装饰器问题
我对 class-trasnforer 或 class-validator 有一些奇怪的问题。我想通过 ValidationPipe 从发布请求中验证正文。Body Schema 应如下所示:
}
我想验证此对象中的所有字段 - 包括嵌套对象,如“承包商”、“费用”、“收入”。所以我使用了@type 装饰器,但我遇到了一个错误:
invoiceValidation_decorator_1.IncomeSoldValidator is not a function
但是!承包商字段与收入和费用具有相同的代码,但即便如此,收入和费用也会返回错误。有谁知道发生了什么?github要点:https ://gist.github.com/Chester97/0f5fecc8d25b55e59e2f25328a60f13e
javascript - 如何使用类转换器将 typescript 类转换为纯 javascript 对象
我的 Angular 应用程序中有一些打字稿类实例,我必须保存到 firebase。Firebase 不支持自定义类,所以我发现了这个:https ://github.com/typestack/class-transformer这似乎很适合我。
所以现在我正在创建我的对象,并尝试转换它。
这是我的对象。
我正在创建一个“旅行”并尝试对其进行转换:
但我明白了:
我想要么我的对象处于不正确的状态,要么我的定义很差,但我找不到什么?
typescript - 为什么 class-transofrmer 演示中没有初始化程序或类构造函数?
这是class-transformer 文档中的演示。这是我的问题:不是User
无效的 Typescript 类,因为它没有任何属性或构造函数的初始化程序吗?其实我把这个demo复制到IDE后,马上就ts(2564): Property 'id' has no initializer and is not definitely assigned in the constructor
报错了
json - 如何防止我的对象的某些字段被类转换器转换
我正在尝试使用库class-transformer
(https://github.com/typestack/class-transformer)将 typescript 类序列化为不接受海关类型的 firebase。
问题是某些数据实际上是与 firebase 兼容的数据,例如 GeoPoint 格式的“坐标”。
我有这个类被序列化:
我想防止“坐标”字段被转换。它应该存在,而不是未转换。
我尝试使用@Transform(({value})=>...)
,但它似乎只是一个“附加”转换,它不允许我保持相同的格式。
我也尝试过Exclude
,但是该字段不再存在。
有没有办法用这个库来完成这个?
nestjs - NestJS 将实体数组转换为 dto
我从这个答案https://stackoverflow.com/a/53385010/6578441中使用了 TransformInterceptor 。它工作得很好。
Bud如何将实体数组转换为dto?
控制器:
ArrayDto:
ItemDto:
预期输出:
实际输出:
谢谢你的帮助
nestjs - NestJS 使用类转换示例验证标头
我正在尝试验证请求的标头是否包含一些特定数据,并且我正在使用 NestJS。我找到了这个信息。虽然这是我想要做的,而且看起来很合适,但 ClassType 引用不存在,我不确定要改用什么。
从示例中,装饰器指的是。
请求标头.decorator.ts
typescript - TypeScript:如何通过类转换器序列化和反序列化具有不同名称的对象
我有财产的User
对象firstName
。我想反序列化它,first_name
但将它序列化为firstName
.
我的打字稿代码:
我想classToPlain
将属性序列化为firstName
. 使用 double@Expose
忽略第二个:
有没有办法序列化/反序列化具有不同属性名称的对象?