Importante

jueves, 11 de mayo de 2023

nest transformación de data en DTO

 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();










0 comentarios:

Publicar un comentario