Refrescar módulo dinámico cuando cambie en NestJS.
app.module.ts
import { MailerModule, MailerOptions } from '@nestjs-modules/mailer';
@Module({
imports: [
...
MailerModule.forRootAsync({
imports: [ServiceModule],
inject: [ConfigService],
useFactory: async (configService: ConfigService) => {
return await configService.getMailserver(true);
}
}),
],
controllers: [AppController],
})
La configuración para MailerModule se lee desde la base de datos. Esto también funciona para el arranque de la aplicación. Solo si inicio la aplicación y luego hago cambios en la base de datos, ¿cómo puedo volver a cargar el módulo sin reiniciar completamente nestjs? actualmente, la configuración cargada en el arranque permanece hasta el reinicio.
davy.ai
Para recargar la configuración de
MailerModule
sin reiniciar completamente NestJS, puedes utilizar el métodoapply()
proporcionado por la API deMailerModule
. A continuación, se detallan los pasos a seguir:MailerService
yMailConfigService
en un controlador que maneje el cambio de configuración. Por ejemplo:PATCH
para activar la acción del controlador y actualizar elMailerService
con la nueva configuración.Cuando el método
apply()
se llama con un nuevo objetoMailerOptions
, actualiza la instancia de transporte del remitente existente con la nueva configuración. Esto te permite recargar la configuración delMailerModule
sin tener que reiniciar la aplicación NestJS.