问题标签 [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 - 不能在nestjs中同时使用IsOptional和Transform装饰器
我正在尝试在嵌套 dto 类中创建一个具有默认值的可选字段。到目前为止,我已经为我的特定字段完成了此操作(如果该字段存在,则使用该字段,否则使用2
):
我仔细检查了验证管道是否在我的应用程序中全局使用,因此在使用我的路由时会调用转换:
但我认为@Optional
装饰器正在接受@Transform
装饰器,我试图在转换中登录,但它没有被调用。在尝试我的路线并记录 dto 时,该字段根本没有出现,因此转换无法正常工作。
我知道这是可能的,所以我很确定这是我的错误。
是否有特定的顺序需要遵守才能使其发挥作用?我错过了什么吗?
谢谢你的时间 !
typeorm - class-transformer:序列化 typeorm manytoone 关系
我有这堂课:
这对于Company
:
出于某种原因,Company
总是作为空间对象中的空对象返回,如下所示:
即使 console.log 吐出
我在这里做错了什么?
nestjs - Nestjs applyDecorators 用于多个装饰器
我想创建自定义装饰器applyDecorators
导入自@nestjs/common
但是我遇到了打字稿 lint 错误。如何创建一个包含多个装饰器的自定义装饰器?
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
但我也不确定如何实现一个。
谢谢!
javascript - 我们需要借助类转换器将 JS 对象反序列化为模型模式
这里的问题是当我使用 plainToClass() 时,我的构造函数将抛出未定义构造函数参数的错误。
这是我的 Mongo de 查询,它返回 DeviceOperationsModel[] 数组。需要使用该库的辅助函数使用类转换器进行类型检查。
这是 DeviceOperationsModel 模型类。有嵌套的类对象
这是 deviceOperationsData 类定义。
等等。
在这里对 Mongo DB 数据进行类型转换的最佳方法是什么?
我试过了,但是
但是得到了相关性,设计,系统名称等是未定义的。
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 个令人沮丧的小时试图弄清楚为什么会这样。这是我遇到过此类问题的唯一包,查看我的配置、包本身和其他所有内容,这对我来说毫无意义。
javascript - Nest js - 在 ToJSON 方法中更改破折号的大写字母
我有方法:
目前要序列化对象,使用:
myPicklist.picklist.toJSON();
我得到:
{ id: 7, picklistName: "status", }
什么是正确的。但是,我需要替换大写字母picklistName
并将其替换为_
like, picklist_name
, 就像在 decorator 中一样@Column
。这可能吗?
json - Angular中的反序列化和循环依赖
我有几个 model.ts 文件。当我使用 httpClient 时,我得到了一个 JSON 对象,但它不能正常工作,因为我必须反序列化它们:How to recursively init class get by httpclient。
但从那时起,我找到了“类转换器”项目,它可以帮助我反序列化我的所有模型。我的服务有:
对于模型,例如:
和乙
但是,在编译时我得到了“循环依赖”并且确实存在循环依赖......
寻找解决方案,我知道我可以使用 Barrel ( https://github.com/typestack/class-transformer/issues/230 ) 但它不起作用。我唯一的限制是我必须保持这种关系->(或者一些非常相似的东西,因为我不能修改后端,所以我将使用 httpClient 接收数据)。
关于如何修复循环依赖的任何想法?
typescript - 转换到/从 json 时,是否可以让类转换器使用 getter/setter
假设我有一个json:
还有一个类:
我可以在转换到/从 json 时让类转换器使用 getter/setter 吗?
typescript - 类转换器未转换为数字数组
我有一个 DTO,其中有一个字段,它是一个数字数组。这些 id 来自 API 查询参数。我正在使用 Class Transformer 将这些 id 转换为数字数组。但我只得到一个字符串数组。我的 DTO 课程如下。
我的控制器代码如下所示。
如果我像下面这样调用我的控制器,我仍然会进入['1', '2']
我的位置字段。
谁能指导我?