NestJS [TypeOrmModule] 无法连接到数据库

kye*_*ego 6 postgresql typeorm nestjs

我想连接到远程 PostgreSQL 数据库(托管在 Heroku 上)并收到此错误:

error: no pg_hba.conf entry for host "<My public IP address>", user "<username>", database "<dbname>", SSL off
Run Code Online (Sandbox Code Playgroud)

这是我的app.module.ts

import { Module } from '@nestjs/common';
import { TypeOrmModule, TypeOrmModuleOptions } from '@nestjs/typeorm';

const cfg: TypeOrmModuleOptions = {
  type: 'postgres',
  host: process.env.DB_HOST,
  database: process.env.DB_NAME,
  username: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  port: Number(process.env.DB_PORT),
};

@Module({
  imports: [TypeOrmModule.forRoot(cfg)],
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

每个DB_*变量都与 Heroku 中的相应值匹配Database Credentials

我认为问题出在 中的某个地方TypeORM,因为使用相同的文件值连接到相同的数据库.env在我的其他应用程序中有效(用不同的编程语言编写)

关于可能出什么问题的任何想法吗?

kye*_*ego 6

为了解决这个问题,我必须在我的 cfg 对象中添加这些行:

ssl: true,
extra: {
  ssl: {
    rejectUnauthorized: false,
  },
},
Run Code Online (Sandbox Code Playgroud)

通过该ssl: true选项,我们将不得不使用 SSL 证书,但我们还没有。

理想的解决方案是获取新的 SSL 证书,但对于开发来说这应该足够了。