Я создаю службу RESTful с NestJs, я следовал пример для создания конфигураций для разных сред. Он хорошо работает для большинства кодов. Однако мне интересно, могу ли я использовать его в моем app.module.ts?
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'mongodb',
host: `${config.get('mongo_url') || 'localhost'}`,
port: 27017,
username: 'a',
password: 'b',
database: 'my_db',
entities: [__dirname + '/MyApp/*.Entity{.ts,.js}'],
synchronize: true}),
MyModule,
ConfigModule,
],
controllers: [],
providers: [MyService],
})
export class AppModule { }
Как видите, я хочу переместить информацию об URL-адресе MongoDb за пределы кода и думаю использовать файлы .env. Но после некоторых попыток, похоже, не работает.
Конечно, вместо этого я могу использовать ${process.env.MONGODB_URL || 'localhost'} и установить переменные среды. Мне все еще любопытно, смогу ли я заставить configService работать.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы должны использовать динамический импорт (см. Асинхронная конфигурация). С его помощью вы можете внедрять зависимости и использовать их для инициализации:
TypeOrmModule.forRootAsync({
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
type: 'mongodb',
host: configService.databaseHost,
port: configService.databasePort,
username: configService.databaseUsername,
password: configService.databasePassword,
database: configService.databaseName,
entities: [__dirname + '/**/*.entity{.ts,.js}'],
synchronize: true,
}),
inject: [ConfigService],
}),
спасибо, чувак, это именно то, что мне нужно! (: