hur man begränsar värdelängden i en objektarray med class validator typescript?


Jag vill skapa en regel med klassvaliderare, värdet på namnets längd ska vara minst längd=1, max längd=100.

men jag sitter fast i 3 dagar..

varje värde av namn bör vara mellan 1-100 tecken.

[{'id': 1, 'name': 'a'}, {'id': 2, 'name': '0123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678901'}]

// det är okej eftersom 100 tecken.

Jag har försökt och googlat så många gånger.. men inget har fungerat bra. Vad ska jag göra??

import { ApiProperty } from '@nestjs/swagger'
import { Length } from 'class-validator'
import { Column, PrimaryGeneratedColumn } from 'typeorm'
import { MaxLenPostFolderName } from './createPostFolder.dto'

class RenamePostFolder {
  @ApiProperty()
  @PrimaryGeneratedColumn()
  id: number

  @ApiProperty({ description: 'post folder name' })
  @Column({ type: 'varchar', length: MaxLenPostFolderName, nullable: false })
  // @Length(1, MaxLenPostFolderName, { each: true })
  name: string
}

// 
export class RenamePostFolderDto {
  @ApiProperty({ required: true })
  @Length(1, MaxLenPostFolderName)
  name: string
}

// created new rename dto, because spec updated, to make 'batch rename'
export class RenamePostFolderDtoV2 {
  @ApiProperty({ required: true, type: [RenamePostFolder] })
  // @Length(1, MaxLenPostFolderName)
  postFolders: RenamePostFolder[]
}

Svar #1

Du kan använda MinLength och MaxLength

import { ApiProperty } from '@nestjs/swagger';
import { MaxLength, MinLength } from 'class-validator';

const MIN_LENGTH = 1;
const MAX_LENGTH = 100;

export class RenamePostFolderDto {
  @ApiProperty({ required: true })
  @MinLength(MIN_LENGTH)
  @MaxLength(MAX_LENGTH)
  name: string;
}

Det finns listat i flera exempel från class-validators dokumentation på GitHub

Relaterade artiklar