Categorias
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