【问题标题】:class-transformer Exclude undefined propertiesclass-transformer 排除未定义的属性
【发布时间】:2020-06-17 22:27:31
【问题描述】:

从类中排除未定义或空属性。这是真实的自然,但我需要一个可以忽略这一点的装饰者

import {Expose, plainToClass} from "class-transformer";

class User {
    @Expose() id: number;
    @Expose() firstName: string;
    @Expose() lastName: string;
}

const fromPlainUser = {
  unkownProp: 'hello there',
  firstName: 'Umed',
  lastName: 'Khudoiberdiev',
}

console.log(plainToClass(User, fromPlainUser, { excludeExtraneousValues: true }))

// User {
//   id: undefined,
//   firstName: 'Umed',
//   lastName: 'Khudoiberdiev'
// }

【问题讨论】:

  • 排除他们的目的是什么?因为他们是你班级的一部分?
  • 我正在将 Nestjs 与 mongoose 一起使用并将其传递给 mongoose 查询
  • 似乎class-transformer 没有一些装饰器来仅排除未定义的属性,这是有道理的,因为您的类User 定义了一个精确的类型并排除了它的一个属性将其转换为另一种类型。您可以尝试从User 中删除id,并且不要使用{ excludeExtraneousValues: true }
  • 嗨,Akash,我也有这个问题。请关注:github.com/typestack/class-transformer/issues/35。也许可以对此发表评论(我也这样做了),所以他们认为它足够重要,可以实施..

标签: typescript class-transformer


【解决方案1】:

如果您创建一个类实例,那么您将拥有它的属性。如果您想要一个没有未定义属性的对象 - 只需将类实例转换回具有避免未定义字段的规则的普通对象即可。 它不再是类实例,而是一个没有未定义字段的对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    相关资源
    最近更新 更多