No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Global Module

8/17
Recursos
// src/database/database.module.ts

import { Module, Global } from '@nestjs/common';

const API_KEY = '12345634';
const API_KEY_PROD = 'PROD1212121SA';

@Global()
@Module({
  providers: [
    {
      provide: 'API_KEY',
      useValue: process.env.NODE_ENV === 'prod' ? API_KEY_PROD : API_KEY,
    },
  ],
  exports: ['API_KEY'],
})
export class DatabaseModule {}
// src/app.module.ts
...
import { DatabaseModule } from './database/database.module';

@Module({
  imports: [
    HttpModule,
    UsersModule,
    ProductsModule,
    DatabaseModule // 馃憟 Use DatabaseModule like global Module
   ], 
  ...
})
export class AppModule {}
// src/users/services/users.service.ts

import { Injectable, NotFoundException, Inject } from '@nestjs/common';
..

@Injectable()
export class UsersService {
  constructor(
    private productsService: ProductsService,
    @Inject('API_KEY') private apiKey: string, // 馃憟 Inject API_KEY
  ) {}

}

Aportes 5

Preguntas 4

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

Apuntes

Un modulo global ser谩 instanciado en todos los dem谩s m贸dulos si que nosotros tengamos que hacerlo expl铆citamente.

Creando un modulo global

  • Para ello creamos un modulo
    nest g mo database
  • Al modulo le agregaremos el decorador global
... 
@Global() // Aqui
@Module({})
export class ProductsModule {}
  • Ahora podemos agregar todos los controladores, modulos y providers que necesitemos
import { Module, Global } from '@nestjs/common';

const API_KEY = '12345634';
const API_KEY_PROD = 'PROD1212121SA';

@Global()
@Module({
  providers: [
    {
      provide: 'API_KEY',
      useValue: process.env.NODE_ENV === 'prod' ? API_KEY_PROD : API_KEY,
    },
  ],
  exports: ['API_KEY'],
})
export class DatabaseModule {}
  • y agregaremos el modulo global al app.module.ts
// src/app.module.ts
...
import { DatabaseModule } from './database/database.module';

@Module({
  imports: [
    ...
    DatabaseModule // 馃憟 Use DatabaseModule like global Module
   ], 
  ...
})
export class AppModule {}

Listo, ahora podremos usar todos los controladores, modulos y providers que fueron declarados en el modulo global sin tener que instanciar el modulo DatabaseModule en los modulos que se requieran

// src/users/services/users.service.ts

import { Injectable, NotFoundException, Inject } from '@nestjs/common';
..

@Injectable()
export class UsersService {
  constructor(
    private productsService: ProductsService,
    @Inject('API_KEY') private apiKey: string, // 馃憟 Inject API_KEY
  ) {}

}

Esto me recuerda mucho a Redux馃

Global Modulo crea una instancia para todos los modulos, no es necesario exportar ni importar

creando un modulo para conexi贸n a Base de datos, sera un global module

馃憦