dto dreate transfer object
json de entrrada -> DTO-> SERVICIO
LUEGO OCURRE EL CAMINO CONTRARIO
PARA ELLO SE CREA UNA CLASE DENTRO DEL MODULO QUE SE NECESITE EN UNA CARPETA DTO ASI
nest g cl modules/twits/dto/create-twit.dto
PS C:\Users\Usuario\Desktop\backend> nest g cl modules/twits/dto/create-twit.dto --no-spec
CREATE src/modules/twits/dto/create-twit.dto/create-twit.dto.ts (30 bytes)
PS C:\Users\Usuario\Desktop\backend>
nest g cl modules/twits/dto/uddate-twit.dto --no-spec
CREATE src/modules/twits/dto/uddate-twit.dto/uddate-twit.dto.ts (30 bytes)
PS C:\Users\Usuario\Desktop\backend> nest g cl modules/twits/dto/uddate-twit.dto --no-spec
CREATE src/modules/twits/dto/uddate-twit.dto/uddate-twit.dto.ts (30 bytes)
PS C:\Users\Usuario\Desktop\backend>
ahora debo crear un nuevo documento en la carpeta dto que contenga cada uno de estos dto y la llameremos index.ts
import {CreateTwitDto } from './create-twit.dto/create-twit.dto'
import {UddateTwitDto} from './uddate-twit.dto/uddate-twit.dto'
ahora debo acomodar los dos cocumentos creado de dto
export class CreateTwitDto {
readonly message: string;
}
export class UddateTwitDto {
readonly message: string;
}
ahora debo descargar el clas validator y el class transformer
npm i class-validator class-transformer
ahora se exporta en lo dto de class validator @ isString
import { IsString } from "class-validator";
export class UddateTwitDto {
@IsString() // la propiedad debe existeir y ser de tipo strint
readonly message: string;
}
hora se lleva el dto al controlador del modulo
createTwit(@Body() menssage: CreateTwitDto): void {
return this.twitService.createTwit(menssage);
}
@Patch(':id')
// eslint-disable-next-line @typescript-eslint/no-unused-vars
updateTwit(@Param('id') id: string, @Body() twit: UddateTwitDto): Twits {
return this.twitService.updateTwit(id, twit);
}
ahora debemos cambiar tambien el servicio pues ya no le enviamos un mendsaje sino un objeto
createTwit({ menssage }: CreateTwitDto): void {
this.twits.push({
id: Math.floor(Math.random() * 2000 + 1).toString(),
menssage: menssage,
});
}
updateTwit(id: string, { menssage }: UddateTwitDto): Twits {
const twit: Twits = this.getTwit(id);
twit.menssage = menssage;
return twit;
}
ahora se debe agregar un pipe en el main.ts para qeu se castee la información que llega a la
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { ValidationPipe } from '@nestjs/common';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
// para validar los dto al entrar
app.useGlobalPipes(
new ValidationPipe({
//lo que se envia sera de un objeto de la dto
transform: true,
}),
);
await app.listen(3000);
}
bootstrap();