Конфигурация NestJs TypeORM с использованием файлов env - PullRequest
0 голосов
/ 25 января 2019

У меня есть два файла .env, таких как dev.env и staging.env.Я использую typeorm в качестве базы данных ORM.Я хотел бы знать, как позволить typeorm читать любой из файлов конфигурации всякий раз, когда я запускаю приложение.Error: No connection options were found in any of configurations file из typeormmodule.

1 Ответ

0 голосов
/ 25 января 2019

Вы можете создать ConfigService , который читает файл, соответствующий переменной окружения NODE_ENV:

1) Установите переменную NODE_ENV в сценариях запуска:

"start:dev": "cross-env NODE_ENV=dev ts-node -r tsconfig-paths/register src/main.ts",
"start:staging": "cross-env NODE_ENV=staging node dist/src/main.js",

2) Считайте соответствующий файл .env в ConfigService

@Injectable()
export class ConfigService {
  private readonly envConfig: EnvConfig;

  constructor() {
    this.envConfig = dotenv.parse(fs.readFileSync(`${process.env.NODE_ENV}.env`));
  }

  get databaseHost(): string {
    return this.envConfig.DATABASE_HOST;
  }
}

3) Используйте ConfigService для настройки соединения с базой данных:

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