Skip to content

Асинхронная конфигурация

Используйте forRootAsync(), если token или другие параметры модуля поступают из Nest configuration providers. Поддерживаются стандартные паттерны useFactory, useClass и useExisting.

useFactory

Factory может быть синхронной или асинхронной и получать зависимости через injection:

ts
TelegrafModule.forRootAsync({
  imports: [ConfigModule],
  useFactory: async (configService: ConfigService) => ({
    token: configService.getOrThrow<string>('TELEGRAM_BOT_TOKEN'),
  }),
  inject: [ConfigService],
});

useClass

Если логика подготовки параметров заслуживает отдельного provider, создайте класс с интерфейсом TelegrafOptionsFactory:

ts
TelegrafModule.forRootAsync({
  useClass: TelegrafConfigService,
});

@Injectable()
class TelegrafConfigService implements TelegrafOptionsFactory {
  createTelegrafOptions(): TelegrafModuleOptions {
    return {
      token: process.env.TELEGRAM_BOT_TOKEN!,
    };
  }
}

useExisting

Чтобы переиспользовать provider, зарегистрированный другим модулем, примените useExisting:

ts
TelegrafModule.forRootAsync({
  imports: [ConfigModule],
  useExisting: TelegrafConfigService,
});

botName доступен при любом асинхронном способе регистрации. При регистрации нескольких instance смотрите раздел несколько ботов.

Опубликовано по лицензии MIT.