我使用 class-transformer > plainToClass
(entity, DTO) 将实体映射到 DTO
我还实现了此处描述的关联 transform.interceptor 模式。
然后我@Expose()
在我的 DTO 成员上使用。这很好用,但我有一个限制,我需要在我的父 DTO 中映射成员 DTO,但这没有发生,请参见下面的简单示例
@Exclude()
export class ParentDTO{
@Expose()
pMember2 : string;
@Expose()
pMember2 : ChildDto[];
}
@Exclude()
export class ChildDTO{
@Expose()
cMember2 : string;
}
export class ParentEntity{
pMember1 : number;
pMember2 : string;
pMember3 : string;
pMember4
: Child[];
}
export class ChildEntity{
cMember1 : number;
cMember2 : string;
cMember3 : string;
}
现在,如果我跑步,plainToClass(parentEntityFromDB, ParentDTO)
我希望得到以下信息
ParentDTO{
pMember2 : string;
pMember2 : ChildDto[];
}
但是,我得到的是
ParentDTO{
pMember2 : string;
pMember2 : Child[]; //Including all original members
}
基本上 plainToClass(entity, DTO) 不会自动映射成员以匹配给定的 DTO 类型。
有没有办法做到这一点,或者这是方法的限制?
谢谢