问题标签 [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 回答
1010 浏览

javascript - ReferenceError:当我在同一个文件中定义多重类时,未定义对象

我使用 node.js 7.44。

在文件 user.models.ts 我有 multilplie 类,如:

当我编译服务器时,我得到了错误ReferenceError: Adress is not defined

如何在同一个文件中使用 multilplie 类?

0 投票
1 回答
1153 浏览

angular - 来自 JSON 对象的“Hydrate”类实例

我有这堂课:

我尝试用以下内容填充它:

值已正确分配,但似乎对象分配正在破坏 getTotal 方法,当我执行它抛出的代码时:

我想知道是否可以在不破坏实例方法且不实现初始化构造函数或工厂方法的情况下做到这一点

0 投票
1 回答
2693 浏览

node.js - 通过 @IsInt() 验证 application/x-www-form-urlencoded 请求类型

当我浏览Pipes文档时,我注意到我无法正确@IsInt()验证application/x-www-form-urlencoded请求,因为我传递的所有值都作为字符串值接收。

我的请求数据如下所示 在此处输入图像描述

我的 DTO 看起来像

验证管道包含下一个代码

当我调试这个管道时,我注意到了这个状态 在此处输入图像描述

  • value - 请求正文值
  • 对象- 通过类转换器值转换
  • 错误- 错误对象

如您所见,错误告诉我们年龄必须是整数

如何通过application/x-www-form-urlencoded请求的@IsInt()验证?

库版本:

  • @nestjs/common@4.6.4
  • 类变压器@0.1.8
  • 类验证器@0.8.1

PS:我还创建了一个存储库,您可以在其中运行应用程序来测试错误。所需的分支how-to-pass-int-validation

UPD:从接受的答案进行更改后,我遇到了将错误的解析数据存储到存储中的问题。记录示例

是否有可能得到很好的解析createCatDto或者我需要做些什么来用正确的类型结构保存它?

0 投票
2 回答
13020 浏览

node.js - NodeJS 将 Dtos 映射到 TypeORM 实体

我有一个运行框架的nodejsREST API 后端,使用typeORM作为我的实体的ORMnestjs

来自C#/Entity Framework背景,我非常习惯将我的 Dtos 映射到数据库实体。

typeORM 有类似的方法吗?

我看过automapper-ts库,但是地图声明中的那些魔术字符串看起来有点吓人……基本上,如果我能做到,那就太棒了:

在 nodejs/typeorm 后端环境中执行此操作(或任何具有相同结果的替代方法)的方法是什么?

0 投票
2 回答
11250 浏览

node.js - NestJS - 基于一个属性有条件地验证身体

我正在尝试找到一种使用 DTO 验证身体的好方法(使用辉煌class-validatorclass-transformer图书馆)。它工作得非常好,即使对于嵌套结构,但在我的情况下,我想拥有基于某些条件的 body 属性。

可能有助于理解的示例:

让我们想象一下我的身体应该一直有selectedCategory。基于该字段,内容可能来自类别 1,其中包含prop1或来自类别 2,其中包含prop2.

我不想让他们两个都为 null,我真的希望必须prop1定义或prop2基于selectedCategory.

我认为我可以使用管道,但是如何指定要使用的正确 DTO?

我已经建立了一个“基”类,它包含所有的公共属性和几个从它继承的其他类。

我可以根据 property 手动实例化管道selectedCategory,这是理想的,但我不知道要传递什么作为管道的第二个参数(元数据)。

谢谢你的帮助。

0 投票
1 回答
3647 浏览

node.js - 如何使用 toJSON 更改序列化实体的属性名称?

我想序列化一个名称与实体中不同的属性。

当我打电话时,classToPlain我希望将属性name序列化为name_column

0 投票
2 回答
9088 浏览

javascript - 序列化:如何排除 json 响应中的实体列,但不排除 Nestjs 中的内部查询

编辑
我已经查看了这个问题/答案How to exclude entity field from controller json
但是,如下所述 - 这是从所有查询中排除该字段(在尝试处理用户验证时,密码字段被排除在使用对没有 ClassSerializerInterceptor 的路由/控制器方法的 findOne 存储库查询

我在 nest.js / typeorm 中有一个实体;我试图从返回的 json 中排除密码字段,但不从我的服务中的任何存储库查询中排除密码字段。例如:

user.entity.ts

auth.controller.ts

如果我Exclude()像这样添加密码

密码包含在响应中

如果我Column()从密码中删除,

密码被排除在响应所有内部查询之外,例如:

这在nest.js 中是否可以使用ClassSerializerInterceptor

如果是这样,将不胜感激指向正确方向的指针。

0 投票
4 回答
22000 浏览

node.js - Nestjs响应序列化与对象数组

我想通过 nestjs 序列化技术序列化控制器响应。我没有找到任何方法,我的解决方案如下:

用户实体

用户响应类

控制器

它有效,但我必须将数据库查询结果显式分配给响应用户成员。有没有更好的办法?非常感谢

这里是实际响应和想要的结果,以获得更好的解释。

这种方法的结果

想要的结果

0 投票
1 回答
2273 浏览

node.js - 如何使用 NestJS 序列化返回 id 字符串而不是 _bsontype

使用时

就像这里的文档中解释的那样

我得到了所需的过滤结果,但是在使用 mongodb 时,id 被格式化,而不是像以前那样没有拦截器_bsontype的普通格式:string

如何将它转换回这样的普通 id 字符串?

0 投票
1 回答
1528 浏览

javascript - 在构造函数中使用 plainToClass

我有一个将属性分配给实例的构造函数:

然后我可以创建一个这样的实例:

我现在想用类转换器替换这个基本功能:

let user = plainToClass(User, {name: 'Jon'})

我的代码库在很多地方都使用了第一种方法,因此我想在构造函数中实现新方法,这样我就不会破坏旧代码:

如何在构造函数中获取类类型?我不能使用 User 因为这是基本模型,其他类也可以从它扩展。