DynamicModule is a NestJS module pattern that allows modules to be configured at runtime via static factory methods (typically forRoot() or register()). The method returns a DynamicModule object specifying module, providers, exports, and optionally global.
@Module({ providers: [Connection], exports: [Connection] })
export class DatabaseModule {
static forRoot(entities = [], options?): DynamicModule {
const providers = createDatabaseProviders(options, entities);
return { module: DatabaseModule, providers, exports: providers };
}
}Properties returned by the dynamic module extend (not override) the @Module() decorator metadata. The method can be synchronous or return a Promise. Imported via imports: [DatabaseModule.forRoot([User])].
The CacheModule’s register() method for configuring Redis caching is a real-world example of DynamicModule usage.