多个不同类型的子类型拥有相同类的 @Type 类转换器
P粉702946921
P粉702946921 2023-08-03 13:32:17
0
1
461
<p>跟着我走,可能会变得有些混乱:</p><p><ul><li>我正在使用NestJs和class-validator/transformer。</li><li>有一个可以包含两种类型的数组。</li><li>我使用@Type通过鉴别器来定义项目。</li><li>我使用Transform是因为它在序列化中是必需的,否则会创建空对象。</li></ul></p><p>现在的问题是,我的鉴别器是一个包含7个值的枚举,其中6个指向一个类,最后一个指向另一个类。问题是,无论枚举类型是什么,当进行序列化时,它总是被更改为第一个子类型。</p><p><br /></p> <pre class="brush:js;toolbar:false;">enum DiscrType = {A: "a", B: "b", C: "c"} class Discriminator { @IsEnum(DiscrType) type: DiscrType } class ClassONE extends Discriminator {...} class ClassTWO extends Discriminator {...} class Stuff { @Type(() =&gt; Discriminator, { discriminator: { property: 'type', subTypes: [ { value: ClassTWO, name: DiscrType.C}, { value: ClassONE, name: DiscrType.A}, // Always turns into this value even if it was B { value: ClassONE, name: DiscrType.B}, ], }, keepDiscriminatorProperty: true, }) @Transform( ({ value }) =&gt; value?.map((object: ClassONE | ClassTWO ) =&gt; object.type === DiscrType.C ? plainToClass(classTWO, object) : plainToClass(ClassONE, object), ), ) @ValidateNested({each: true}) property: (ClassONE | ClassTWO )[] } </pre> <p>行为:</p> <pre class="brush:js;toolbar:false;">new Stuff({type: DiscrType.B,...}) // Serialization with Class Serializer // Expected: x = {type: "b",...} // Actual: x = {type: "a",...}<span style="font-family:'sans serif, tahoma, verdana, helvetica';"><span style="white-space:nowrap;"> </span></span></pre> <p><br /></p>
P粉702946921
P粉702946921

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!