La documentacion de Nest recomienda crear los DTOs con classes y no con interfaces.
- Para que las validaciones sean tambien a nivel de ejecucion y no solo a nivel de desarrollo, podemos usar la lib interna de nest class-validator.
import { PartialType } from '@nestjs/mapped-types';
import { IsString, IsNumber, IsOptional, IsNotEmpty } from 'class-validator';
export class CreateProductDto {
@IsNotEmpty()
@IsString()
readonly name: string;
@IsString()
@IsOptional()
description?: string;
@IsNotEmpty()
@IsNumber({ allowNaN: false })
price: number;
@IsNotEmpty()
@IsNumber()
readonly stock: number;
@IsString()
readonly image: string;
}
export class UpdateProductDto extends PartialType(CreateProductDto) {
@IsOptional()
@IsString()
readonly name?: string;
@IsString()
@IsOptional()
description?: string;
@IsOptional()
@IsNumber({ allowNaN: false })
price?: number;
@IsOptional()
@IsNumber()
readonly stock?: number;
@IsOptional()
@IsString()
readonly image?: string;
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?