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

nestjs - 不能在nestjs中同时使用IsOptional和Transform装饰器

我正在尝试在嵌套 dto 类中创建一个具有默认值的可选字段。到目前为止,我已经为我的特定字段完成了此操作(如果该字段存在,则使用该字段,否则使用2):

我仔细检查了验证管道是否在我的应用程序中全局使用,因此在使用我的路由时会调用转换:

但我认为@Optional装饰器正在接受@Transform装饰器,我试图在转换中登录,但它没有被调用。在尝试我的路线并记录 dto 时,该字段根本没有出现,因此转换无法正常工作。

我知道这是可能的,所以我很确定这是我的错误。

是否有特定的顺序需要遵守才能使其发挥作用?我错过了什么吗?

谢谢你的时间 !

0 投票
1 回答
1492 浏览

typeorm - class-transformer:序列化 typeorm manytoone 关系

我有这堂课:

这对于Company

出于某种原因,Company总是作为空间对象中的空对象返回,如下所示:

即使 console.log 吐出

我在这里做错了什么?

0 投票
1 回答
1882 浏览

nestjs - Nestjs applyDecorators 用于多个装饰器

我想创建自定义装饰器applyDecorators导入自@nestjs/common

但是我遇到了打字稿 lint 错误。如何创建一个包含多个装饰器的自定义装饰器?

https://docs.nestjs.com/custom-decorators

0 投票
1 回答
3432 浏览

serialization - NestJS从snake_case到camelCase的序列化

我想为 NestJS 控制器实现 JSON 请求/响应主体的自动序列化/反序列化,准确地说,自动将snake_case请求主体 JSON 键转换为camelCase在我的控制器处理程序处接收,反之亦然。

我发现使用class-transformer's @Expose({ name: 'selling_price' }),如下例所示(我使用的是 MikroORM):

可以看到@Expose注释完美地工作,但更进一步,我希望能够将其转换为实体上的属性名称:sellingPrice,因此我可以将解析的请求正文直接传递给我的服务和我的存储库方法this.recipeRepository.create(data)。当前条件是该sellingPrice字段将为空,因为存在该selling_price字段。如果我不使用@Expose,则需要写入请求 JSON camelCase,这不是我喜欢的。

我可以执行 DTO 和构造函数以及分配字段,但我认为这是相当重复的,并且由于我的命名偏好,我将有很多字段要转换:snake_case在 JSON 和数据库列以及camelCase所有 JS/TS 部分上。

有没有办法可以干净利落地做这个把戏?也许已经有解决方案了。snake_case也许是一个可以全部转换为的全局拦截器,camel_case但我也不确定如何实现一个。

谢谢!

0 投票
1 回答
848 浏览

javascript - 我们需要借助类转换器将 JS 对象反序列化为模型模式

这里的问题是当我使用 plainToClass() 时,我的构造函数将抛出未定义构造函数参数的错误。

这是我的 Mongo de 查询,它返回 DeviceOperationsModel[] 数组。需要使用该库的辅助函数使用类转换器进行类型检查。

这是 DeviceOperationsModel 模型类。有嵌套的类对象

这是 deviceOperationsData 类定义。

等等。

在这里对 Mongo DB 数据进行类型转换的最佳方法是什么?

我试过了,但是

但是得到了相关性,设计,系统名称等是未定义的。

0 投票
0 回答
6402 浏览

typescript - 找不到模块“类转换器”或其相应的类型声明

我正在尝试将 class-transformer 包与 NestJS v7 一起使用。class-transformer 包是随npm i class-transformer --save. 我已按照readme.md的说明进行操作

这个包确实有一个打字稿定义,我可以在我的文件系统上看到它(在 node_modules 内的正确目录中),VS Code 很好地导航到定义,所以我完全困惑为什么它不工作。我尝试删除我的 node_modules 目录,清除我的 NPM 缓存并使用npm install.

当我尝试编译时,我得到了Cannot find module 'class-transformer' or its corresponding type declarations.

我的实体代码:

我的 tsconfig.json:

我的 package.js:

我花了 2 个令人沮丧的小时试图弄清楚为什么会这样。这是我遇到过此类问题的唯一包,查看我的配置、包本身和其他所有内容,这对我来说毫无意义。

0 投票
1 回答
324 浏览

javascript - Nest js - 在 ToJSON 方法中更改破折号的大写字母

我有方法:

目前要序列化对象,使用:

myPicklist.picklist.toJSON();我得到:

{ id: 7, picklistName: "status", }

什么是正确的。但是,我需要替换大写字母picklistName并将其替换为_like, picklist_name, 就像在 decorator 中一样@Column。这可能吗?

0 投票
1 回答
143 浏览

json - Angular中的反序列化和循环依赖

我有几个 model.ts 文件。当我使用 httpClient 时,我得到了一个 JSON 对象,但它不能正常工作,因为我必须反序列化它们:How to recursively init class get by httpclient

但从那时起,我找到了“类转换器”项目,它可以帮助我反序列化我的所有模型。我的服务有:

对于模型,例如:

和乙

但是,在编译时我得到了“循环依赖”并且确实存在循环依赖......

寻找解决方案,我知道我可以使用 Barrel ( https://github.com/typestack/class-transformer/issues/230 ) 但它不起作用。我唯一的限制是我必须保持这种关系->(或者一些非常相似的东西,因为我不能修改后端,所以我将使用 httpClient 接收数据)。

关于如何修复循环依赖的任何想法?

0 投票
1 回答
506 浏览

typescript - 转换到/从 json 时,是否可以让类转换器使用 getter/setter

假设我有一个json:

还有一个类:

我可以在转换到/从 json 时让类转换器使用 getter/setter 吗?

0 投票
1 回答
4722 浏览

typescript - 类转换器未转换为数字数组

我有一个 DTO,其中有一个字段,它是一个数字数组。这些 id 来自 API 查询参数。我正在使用 Class Transformer 将这些 id 转换为数字数组。但我只得到一个字符串数组。我的 DTO 课程如下。

我的控制器代码如下所示。

如果我像下面这样调用我的控制器,我仍然会进入['1', '2']我的位置字段。

谁能指导我?