0

我是这个框架的新手。我使用 ormconfig 文件连接了 PostgreSQL 数据库。但是我需要配置开发环境、生产环境、测试环境。如何实现这个场景。我尝试在我的项目中使用配置服务。但始终只连接 .env 文件配置。

开发.env

POSTGRES_HOST=127.0.0.1
POSTGRES_PORT="5432"
POSTGRES_USER=postgres
POSTGRES_PASSWORD='*****'
POSTGRES_DATABASE=testdb123
PORT=4000
4

2 回答 2

2

您可以使用 ormconfig.js 并在其顶部添加如下内容:

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

另一种选择是像这样导入ConfigModule

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

并为 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],
})

我在这里使用了类似的异步配置。

于 2021-02-11T07:56:04.093 回答
1

好吧,我建议将 .env 文件保留在 git ignore 下,并有一个 .env.example 包含所有可能的配置项。

如果您想为每个 env 设置默认设置,您可以使用类似 https://www.npmjs.com/package/dotenv-defaults

如果您想为每个环境使用 DI 和类型以及 env 文件,请查看嵌套配置模块

于 2021-02-11T13:45:45.160 回答