NestJs TypeORM 异步配置

Posted

技术标签:

【中文标题】NestJs TypeORM 异步配置【英文标题】:NestJs TypeORM async configuration 【发布时间】:2019-10-31 04:29:31 【问题描述】:

我正在尝试使用@nestjs/typeorm 模块并使用异步配置。在我的app.module.ts 我有以下内容:

@Module(
  controllers: [
    AppController,
  ],
  exports: [ConfigModule],
  imports: [
    ConfigModule,
    TypeOrmModule.forRootAsync(
      imports: [ConfigModule],
      inject: [ConfigService],
      useFactory: async (config: ConfigService) => 
        console.log("config.getPostgresConfig(): ", config.getPostgresConfig());
        return 
          ...config.getPostgresConfig(),
          entities,
          synchronize: true,
          type: "postgres",
         as PostgresConnectionOptions;
      ,
    ),
  ],
  providers: [AppService],
)
export class AppModule 

console.log 打印正确的内容,但我经常收到此错误:

2019-06-17T14:41:35.569358700Z [Nest] 45   - 06/17/2019, 2:41 PM   [NestFactory] Starting Nest application...
2019-06-17T14:39:31.277686600Z     at Object.next (/root/node_modules/tslib/tslib.js:114:57)
2019-06-17T14:41:35.740192700Z [Nest] 45   - 06/17/2019, 2:41 PM   [TypeOrmModule] Unable to connect to the database. Retrying (1)... +170ms
2019-06-17T14:41:35.740666500Z Error: No connection options were found in any of configurations file.
2019-06-17T14:41:35.740704100Z     at ConnectionOptionsReader.<anonymous> (/root/src/connection/ConnectionOptionsReader.ts:41:19)

配置应该都是通过配置服务动态完成的,我不明白为什么它要求配置文件,以及为什么它无法连接到数据库。

【问题讨论】:

【参考方案1】:

这是我的错,我还在另一个模块中导入TypeOrmModule.forRoot(),这导致了很多问题。

【讨论】:

以上是关于NestJs TypeORM 异步配置的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Nestjs 中使用 .env 文件设置 Typeorm 的配置

NestJs TypeORM 配置使用 AWS Parameter Store

NestJS:通过请求(子域)连接数据库(TypeORM)

NestJS typeorm - 无法创建实体

找不到模块'@nestjs/typeorm'

TypeError:存储库方法不是函数(NestJS / TypeORM)