Categorias
iiiiii
Variables de entorno
Descripcion
para usar esta propiedad es necesario usar paquete
Nota1
1. instalar los siguientes paquetes
yarn add @nestjs/config
2. en app moudulo inyectar "[ConfigModule.forRoot()"
3. creamos el archivo .env y creamos nuestra variables de entorno
NOTA: pero vamos tambien a controlar si la variable de enrotno viene vacia le pondremos un valor por defecto
4. para crear varibales de entorno por defecto crearemos un nuevo archivo llamado
5. importar el ConfigModule donde se desea llamar la variable de entorno y para este caso llamaremos pokemon
importamos el ConfigModule y luego lo usaremos en el PokemonService.
NOTA: para hacer que una varibale de entonro sea obligatoria usar el paquete este tambien se puede implementar con el configModule
https://www.npmjs.com/package/joi
Modulo
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';
import { ConfigModule } from '@nestjs/config';
@Module({
controllers: [PokemonController],
providers: [PokemonService],
imports:[
ConfigModule, //aqui para poder usarlo en cualquier partde del modulo de POKEMON
)
]
,exports:[MongooseModule]
})
export class PokemonModule {}
Servicio
import { Injectable, Body, Post, Controller } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose/dist/common';
import { ConfigService } from '@nestjs/config';
@Injectable()
export class PokemonService {
constructor(
@InjectModel(Pokemon.name)
private readonly PokemonModel:Model<Pokemon>,
private readonly configService:ConfigService //Se inyecta el paquet configServices para manejar varibles de entonreo con valores por defecto.
){
}
async findAll({limit=10,offset=0}:PaginationDto) {
console.log(this.configService.get('defaultLimit')); //De esta forma se llama la variable de entorno
return {}
}
}
Controlador
a
Entity
// ARCHIVO : app.config.ts
export const vairbleEntornoConDefectos=()=>{
return {
envireomen:process.env.NODE_ENV||'dev', //Si no viene que se ponga dev y asi con las demas propiedades
mongodb:process.env.MONGODB,
port:process.env.PORT||3002,
default_limit:process.env.DEFAULT_LIMIT||7,
}
}
App.module
import { join } from 'path';
import { Module } from '@nestjs/common';
import { ServeStaticModule } from '@nestjs/serve-static';
// import { AppController } from './app.controller';
// import { AppService } from './app.service';
import { PokemonModule } from './pokemon/pokemon.module';
import { MongooseModule } from '@nestjs/mongoose';
import { CommonModule } from './common/common.module';
import { SeedModule } from './seed/seed.module';
import { ConfigModule } from '@nestjs/config';
import { vairbleEntornoConDefectos } from './config/app.config';
@Module({
imports: [
//ConfigModule.forRoot(), //importante en el inicio
ConfigModule.forRoot(
{
load:[vairbleEntornoConDefectos] //Le pasadmos el archivo con nuestra variables de entorno configuradas con valores por defecto
}
),
ServeStaticModule.forRoot({
rootPath: join(__dirname,'..','public'),
}),
PokemonModule,
MongooseModule.forRoot('mongodb://localhost:27017/nest-pokemon'),
CommonModule,
SeedModule
],
controllers: [],
providers: [],
})
export class AppModule {
}
Main
a
Vista
a