Nest.js 验证字符串数组(如果仅存在已定义的字符串)

Ser*_*gii 24 validation request typescript nestjs

在控制器级别的 Nest.js 应用程序中,我必须验证 DTO。

我很难检查项目是否不为空(如果任何列表项目为null或,则请求应被拒绝undefined

下面的代码演示了我配置的验证。

import { ArrayMinSize, IsArray } from 'class-validator'

export class ReminderPayload {
    // ...
    @IsArray()
    @ArrayMinSize(1)
    recipients: string[]
}
Run Code Online (Sandbox Code Playgroud)

问题

  1. 我正在寻求帮助来拒绝带有身体数据的请求,例如
{
    "recipients": [
        null
    ]
}
Run Code Online (Sandbox Code Playgroud)
  1. 如何验证数组项是否string唯一(如果对象位于数组项位置,则应拒绝处理)?

聚苯乙烯

'class-validator'注入成功,它为我的 API 生成了一些验证结果。

HMi*_*adt 49

each您需要告诉类验证器对数组的项目运行验证。将您的有效负载 DTO 更改为以下内容:

import { ArrayMinSize, IsArray, IsString } from 'class-validator';

export class ReminderPayloadDto {
  // ...
  @IsArray()
  // "each" tells class-validator to run the validation on each item of the array
  @IsString({ each: true })
  @ArrayMinSize(1)
  recipients: string[];
}

Run Code Online (Sandbox Code Playgroud)

链接到有关此的文档。

  • 杰出的!你错过了`@IsNotEmpty({each: true})`,但我已经有了想法并且错过了文档部分 (7认同)