相关疑难解决方法(0)

禁止 Nestjs 中 DTO 的特定枚举值

我的“AppState”枚举具有以下可能的枚举值:

export enum AppState {
  SUCCESS,
  ERROR,
  RUNNING
}
Run Code Online (Sandbox Code Playgroud)

我有一个UpdateAppStateDTOappState它应该接受除RUNNING之外的每个枚举值。

export class UpdateAppStateDTO {
  @IsEnum(AppState)
  @NotEquals(AppState.RUNNING) // Doesn't work properly
  public appState: AppState;
}
Run Code Online (Sandbox Code Playgroud)

对于路线我有这个例子

  @Patch()
  public setState(@Body() { appState }: UpdateAppStateDTO): void {
    console.log(appState);
  }
Run Code Online (Sandbox Code Playgroud)

如果请求有一个空的正文或一个无效的枚举值,比如“foobar”,appState因为我得到了 400,这很好。

问题是当我发送“RUNNING”时,我仍然得到 200 而不是 400。

我怎样才能防止这种行为?

class-validator nestjs

9
推荐指数
1
解决办法
6736
查看次数

在 nestjs 中具有嵌套对象数组的类验证器

我正在尝试验证 nestjs 中的嵌套对象数组,它工作正常。但是,如果我发送非数组值(如字符串或空值),则会出现错误:

TypeError: Cannot read property 'length' of undefined.

嵌套字段:

@IsArray()
@ValidateNested({ each: true })
@Type(() => NestedDTO)
nested: NestedDTO[];
Run Code Online (Sandbox Code Playgroud)

如何在验证嵌套对象之前验证该值是一个数组?

版本:

NestJS: 6.10.14
class-validator: 0.11.0
Run Code Online (Sandbox Code Playgroud)

dto typescript class-validator nestjs

6
推荐指数
1
解决办法
1591
查看次数

标签 统计

class-validator ×2

nestjs ×2

dto ×1

typescript ×1