plainToInstance 不适用于 Decimal 作为默认值

问题描述 投票:0回答:0

我正在使用类转换器的 plainToInstance 从其他值中获取一些值。我遇到的问题的最小示例如以下代码所示:

class MyClass {
  readonly attempts: number = 1;

  readonly totalDistance: number = 1;
  
  @Transform(({ obj }) => new Decimal(obj.totalDistance).div(obj.attempts))
  readonly distancePerAttempt: Decimal = new Decimal(0);
}

并以这种方式使用 MyClass:

plainToInstance(
  MyClass,
  {
    attempts: 3,
    totalDistance: 30,
  },
);

我得到的错误是:

[Nest] 51628  - 07/29/2023, 10:44:03 PM   ERROR [AllExceptionsFilter] Error: [DecimalError] Invalid argument: undefined
    at new Decimal (/Users/.../node_modules/@prisma/client/runtime/index.js:30312:13)
    at TransformOperationExecutor.transform (/Users/.../node_modules/src/TransformOperationExecutor.ts:160:22)
    at TransformOperationExecutor.transform (/Users/.../node_modules/src/TransformOperationExecutor.ts:333:33)
    at ClassTransformer.plainToInstance (/Users/.../node_modules/src/ClassTransformer.ts:77:21)
    at plainToInstance (/Users/.../node_modules/src/index.ts:84:27)
...

如果我不为 distancePerAttempt 提供默认值,则不会出现错误,但在这种情况下,不会应用@Transform。

任何人都可以确认这是错误,或者告诉我我做错了什么吗?

decimal nest class-transformer
© www.soinside.com 2019 - 2024. All rights reserved.