web-dev-qa-db-ja.com

環境ファイルを使用したNestJsTypeORM構成

dev.envstaging.envのような2つの.envファイルがあります。データベースORMとしてtypeormを使用しています。アプリケーションを実行するたびに、typeormにいずれかの構成ファイルを読み取らせる方法を知りたいです。 typeormmoduleからのError: No connection options were found in any of configurations file

3
Arsene

環境変数NODE_ENVに対応するファイルを読み込む ConfigService を作成できます。

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)ConfigServiceで対応する.envファイルを読み取ります

@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]
}),
8
Kim Kern