Jestem nowym tym strukturą. Podłączyłem bazę danych PostgreSQL za pomocą pliku ORMCONFIG. Ale muszę skonfigurować środowisko rozwojowe, środowisko produkcyjne, środowisko testowe. Jak osiągnąć to scenariusze. Próbowałem użyć usługi konfiguracyjnej w moim projekcie. Ale zawsze podłączony tylko konfigurację plików .ENV.

rozwój.ENV

POSTGRES_HOST=127.0.0.1
POSTGRES_PORT="5432"
POSTGRES_USER=postgres
POSTGRES_PASSWORD='*****'
POSTGRES_DATABASE=testdb123
PORT=4000
0
hari prasanth 11 luty 2021, 10:25

2 odpowiedzi

Najlepsza odpowiedź

Cóż, polecam, aby zachować plik .env w GIT ignoruj i ma

Jeśli chcesz mieć ustawienia domyślne dla każdego ENV, możesz użyć czegoś takiego https://www.npmjs.com/package/dotenv-defaults

Jeśli chcesz używać Di & Amp; Wpisanie, a także Env Pliki dla każdego środowiska, spójrz na Nest Moduł konfiguracji

1
awHamer 11 luty 2021, 13:45

Możesz użyć ormconfig.js i na górze dodać coś takiego:

require('dotenv').config({
  path: '.env.' + process.env.NODE_ENV
})

Inną opcją jest import ConfigModule w ten sposób:

ConfigModule.forRoot({
  load: [config],
  envFilePath: '.env.' + process.env.NODE_ENV
})

I użyj Konfiguracja asynchroniczna dla Typeorm:

TypeOrmModule.forRootAsync({
  imports: [ConfigModule],
  useFactory: (configService: ConfigService) => ({
    type: 'mysql',
    host: configService.get('POSTGRES_HOST'),
    port: +configService.get<number>('POSTGRES_PORT'),
    username: configService.get('POSTGRES_USER'),
    password: configService.get('POSTGRES_PASSWORD'),
    database: configService.get('POSTGRES_DATABASE'),
    entities: [__dirname + '/**/*.entity{.ts,.js}'],
    synchronize: configService.get('TYPEORM_SYNC'),
  }),
  inject: [ConfigService],
})

Używam podobnej konfiguracji asynchronizacji Oto.

2
Uroš Anđelić 11 luty 2021, 07:56