尝试在以下代码中应用 IsEnum 类验证器时:
export class UpdateEvaluationModelForReportChanges {
@IsNotEmpty()
@IsEnum(ReportOperationEnum) // FIRST
operation: ReportOperationEnum;
@IsNotEmpty()
@IsEnum(EvaluationStatusEnum). // SECOND
status: EvaluationStatusEnum;
// ...
}
我在第二个 IsEnum 装饰器中遇到此错误:
../node_modules/src/decorator/typechecker/IsEnum.ts:18
return Object.entries(entity)
^
TypeError: Cannot convert undefined or null to object
第一个枚举
ReportOperationEnum
是在与类相同的文件中定义的。这是它的定义:
// ...
export enum ReportOperationEnum {
COMPLETED = "COMPLETED",
REVIEWED = "REVIEWED",
RETURNED = "RETURNED",
}
// ...
第二个枚举
EvaluationStatusEnum
位于单独的文件中:
// ...
export enum EvaluationStatusEnum {
CANCELED = 'CANCELED',
SCHEDULED = 'SCHEDULED',
FINISHED = 'FINISHED',
}
// ...
虽然将第二个枚举复制到包含第一个枚举的文件中可以解决问题,但我不喜欢从其原始位置复制或重新定位第二个枚举。 以防万一,这两个枚举都是包含其他枚举和类的文件的一部分。 是否有任何潜在原因或相关因素可能导致此问题?
我解决了这个问题。它似乎与第二个枚举
EvaluationStatusEnum
的位置有关,该位置位于导出架构的文件中:
export enum EvaluationStatusEnum {
// ...
}
@Schema()
export class Evaluation extends BaseModel implements EvaluationModel {
// ...
}
export const EvaluationSchema = SchemaFactory.createForClass(Evaluation);
因此,通过将枚举移至第三个文件(我现在将专门为枚举保留该文件),错误就消失了。