node.js - Nodejs 类验证器验证对象数组

标签 node.js arrays validation class-validator

我有一个看起来像这样的对象数组

[{
  name: 'some name'
  catId: 2,
}, {
  name: 'another name'
  catId: 3,
}]

如何使用 class-validator 进行验证这样名称字段是必需的,并且每个对象中的长度至少为 2 个字符?

谢谢

最佳答案

要验证项目数组,您需要使用@ValidateNested({each: true })

一个完整的例子:

import { validate, IsString, MinLength, ValidateNested } from 'class-validator';

class MySubClass {
  @IsString()
  @MinLength(2)
  public name: string;

  constructor(name: string ){
    this.name = name;
  }
}

class WrapperClass {
  @ValidateNested({ each: true })
  public list: MySubClass[];

  constructor(list: MySubClass[]) {
    this.list = list;
  }
}

const subClasses = Array(4)
    .fill(null)
    .map(x => new MySubClass('Test'))

subClasses[2].name = null;

const wrapperClass = new WrapperClass(subClasses);
const validationErrors = await validate(wrapperClass);

这将按预期记录 subClasses[2] 的验证错误。

关于node.js - Nodejs 类验证器验证对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49254339/

相关文章:

javascript - 将数组转换为对象+设置属性名称

php - php 中的 number_format() 与 jQuery 中的 toFixed() 进行验证

java - 使用xalan在xsl中获取ArrayList

node.js - 使用node命令时指定要运行的版本

java - 如何绕过 array.equals(otherArray) 评估为 null?

javascript - 错误 : Uncaught, 未指定 "error"事件。 (不是有效的 BCrypt 哈希值。)

c - 打印 C 中函数返回的字符数组

javascript - 具有通用 JS 验证的多种表单

node.js - Typescript 中返回点不一致是什么意思

javascript - 从种子/ key 创建大型数组/数据