如何使用postgresql在nest js中设置不同的环境文件

How to setup different environment file in nest js using postgresql

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

development.env

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

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

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

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

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

并为 TypeORM 使用 async configuration

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

我使用类似的异步配置here

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

如果你希望每个环境都有一个默认设置,你可以使用类似 https://www.npmjs.com/package/dotenv-defaults

如果您想为每个环境使用 DI 和类型以及 env 文件,请查看 nest configuration module