【问题标题】:Nest.js validate array of strings if there are defined strings only如果仅定义了字符串,Nest.js 会验证字符串数组
【发布时间】:2021-11-25 00:20:10
【问题描述】:

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

我在检查项目是否不为空时遇到了困难(如果任何列表项目为nullundefined,则应拒绝请求)

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

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

export class ReminderPayload {
    // ...
    @IsArray()
    @ArrayMinSize(1)
    recipients: string[]
}

问题

  1. 我正在寻求帮助以拒绝包含正文数据的请求,例如
{
    "recipients": [
        null
    ]
}
  1. 如何验证数组项是否仅为string(如果对象位于数组项位置,则应拒绝处理)?

附言

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

【问题讨论】:

    标签: typescript validation request nestjs


    【解决方案1】:

    您需要告诉 class-validator 对数组的 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[];
    }
    
    

    Link 到有关此的文档。

    【讨论】:

    • 太棒了!你错过了@IsNotEmpty({ each: true }),但我有这个想法并错过了文档部分
    猜你喜欢
    • 2021-06-19
    • 2012-11-19
    • 2015-02-13
    • 2020-05-30
    • 2012-09-07
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多