Лучшая практика использования службы конфигурации в модуле NestJS - PullRequest
0 голосов
/ 22 ноября 2018

Я хочу использовать переменные среды для настройки HttpModule на модуль, из документов Я могу использовать конфигурацию следующим образом:

@Module({
  imports: [HttpModule.register({
    timeout: 5000,
    maxRedirects: 5,
  })],
})

Но я не знаюКаков наилучший способ включить baseURL из среды vairable (или службы конфигурации), например, так:

@Module({
imports: [HttpModule.register({
    baseURL:  this.config.get('API_BASE_URL'),
    timeout: 5000,
    maxRedirects: 5,
})],

this.config - это undefined, потому что он вне класса.

Как лучше всего устанавливать baseURL из переменных среды (или службы конфигурации)?

1 Ответ

0 голосов
/ 22 ноября 2018

Обновление от 19 января

HttpModule.registerAsync() было добавлено в версии 5.5.0 с этим запросом .

HttpModule.registerAsync({
  imports:[ConfigModule],
  useFactory: async (configService: ConfigService) => ({
    baseURL:  this.config.get('API_BASE_URL'),
    timeout: 5000,
    maxRedirects: 5,
  }),
  inject: [ConfigService]
}),

Исходное сообщение

Эта проблема обсуждалась в этом выпуске .Для таких модулей nestjs, как TypeOrmModule или MongooseModule, был реализован следующий шаблон:

Метод useFactory возвращает объект конфигурации.

TypeOrmModule.forRootAsync({
  imports:[ConfigModule],
  useFactory: async (configService: ConfigService) => ({
    type: configService.getDatabase()
  }),
  inject: [ConfigService]
}),

Хотя Камил писал

Вышеупомянутое соглашение теперь применяется во всех модулях гнезда и будет рассматриваться как лучшая практика (+ рекомендация для сторонних модулей).Более подробно в документах

он пока не реализован для HttpModule, но, возможно, вы можете открыть вопрос об этом.В упомянутой выше проблеме есть и другие предложения.

Также ознакомьтесь с официальными документами с рекомендациями по внедрению ConfigService.

.
...