TECNOLOBO

No recuerdas tu codigo?
Se te olvido como se hace?

Aqui podras guardar lo que necesiten
Y cuando sea necesesario

Creado por julian gomez
iiiiii

crear seed



Descripcion

Llenar datos en mongodb

Nota1


1. crear un modulo
  nest g res seed --no-spec

2. instalaremos axios
	yarn add axios@0.27.2 o npm install axios@0.27.2.

3. creamos una interface llamada PokemonResponse
	1. inhgresamos a la pagina : https://app.quicktype.io/
	2. pegamos el json de la respuesta de pokemo api. :https://pokeapi.co/

3. exportar el MongooseModule del modulo encargado de hacer el insert upda delete de la tabla pokemon
4. implementamos  SeedService.executeSeed haciendo uso de PokemonResponse en el metodo get
						

Modulo


asd
						

Servicio


import { Injectable } from '@nestjs/common';
import axios, { AxiosInstance } from 'axios';
import { PokemonResponse } from './interfaces/poke-interface.interface';
import { PokemonService } from '../pokemon/pokemon.service';
import { Pokemon } from 'src/pokemon/entities/pokemon.entity';
import { Model } from 'mongoose';
import { InjectModel } from '@nestjs/mongoose/dist/common';


@Injectable()
export class SeedService {
  
  constructor(
    @InjectModel(Pokemon.name)
    private readonly PokemonModel:Model<Pokemon>){

  }

  private readonly axios:AxiosInstance = axios;

  async executeSeed(){
    const {data} = await this.axios.get<PokemonResponse>('https://pokeapi.co/api/v2/pokemon?limit=100');
    //console.log(data);
    await this.PokemonModel.deleteMany();
    
    let pokemonInsert:{name:string,no:number}[]=[];
    data.results.forEach(async({name,url}) => {
      
      const segm = url.split('/');
      const no:number = +segm[segm.length-2];
      const newPokemon = {name,no};
      pokemonInsert.push(newPokemon);
         
    }); 
    
    await this.PokemonModel.insertMany(pokemonInsert);

    return 'Todo ok';
  }
}

						

Controlador


//Encargado de recibir la peticion http y llamar al servicio que se encarga de llenar el seed service

import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common';
import { SeedService } from './seed.service';

@Controller('seed')
export class SeedController {
  constructor(private readonly seedService: SeedService) {}


  @Get()
  executeSeed() {
    return this.seedService.executeSeed();
  }
}

						

Entity


asd
						

App.module


// #3 Aqui esta el MODULO Encargado de Crear Manejar la base de datos INSET UPD DELE ETC
// Aqui debemos exportar el MongooseModule para ser usado en el seed
import { Module } from '@nestjs/common';
import { PokemonService } from './pokemon.service';
import { PokemonController } from './pokemon.controller';
import { MongooseModule } from '@nestjs/mongoose';
import { Pokemon, PokemonSchema } from './entities/pokemon.entity';

@Module({
  controllers: [PokemonController],
  providers: [PokemonService],
  imports:[
    MongooseModule.forFeature([
      {
        name:Pokemon.name,
        schema: PokemonSchema,
      }
    ])
  ]
  ,exports:[MongooseModule]
})
export class PokemonModule {}

						

Main


//Interface
export interface Pokemon {
  count:    number;
  next:     string;
  previous: null;
  results:  Result[];
}

export interface Result {
  name: string;
  url:  string;
}

						

Vista


asd