【问题标题】:How to configure TypeORM in NestJS for using postgres replication?如何在 NestJS 中配置 TypeORM 以使用 postgres 复制?
【发布时间】:2021-03-16 12:14:55
【问题描述】:

我在 AWS 中为 postgres 数据库设置了复制。 如何在 NestJs 中配置 TypeORM 以使用读/写副本。

我当前的代码如下所示。如何将此多重连接转换为使用复制。

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'postgres',
      host: '127.0.0.1',
      port: 5432,
      username: 'user1',
      password: 'pass1',
      database: 'user1',
      synchronize: true,
      entities: ['src/**/*.entity{.ts,.js}'],
      migrations: ['./src/migrations/*.ts'],
    }),
    TypeOrmModule.forRoot({
      type: 'postgres',
      name: 'read',
      host: '127.0.0.2',
      port: 5432,
      username: 'user2',
      password: 'pass2',
      database: 'user2',
      entities: ['src/**/*.entity{.ts,.js}'],
     migrations: ['./src/migrations/*.ts'],
   })
  ],
  controllers: [HealthCheckController],
  providers: [],
})
export class AppModule {}

user.module.ts

@Module({
  imports: [
    TypeOrmModule.forFeature([UserEntity]),
  ],
  exports: [],
  controllers: [UserController],
})
export class UserModule {}

user.service.ts

@Injectable()
export class OnboardingService {
  private readonly logger: Logger = new Logger(UserService.name);

  public constructor(
    @InjectRepository(UserEntity)
    private readonly userEntityRepository: Repository<UserEntity>,
    @InjectConnection()
    private readonly connection: Connection,
  ) {}

如何在 user.service.ts 文件中使用从/主连接?

【问题讨论】:

    标签: typescript postgresql replication nestjs typeorm


    【解决方案1】:

    要配置复制连接设置,您可以:

     @Module({
     imports: [TypeOrmModule.forRoot({
        type: 'postgres',
        replication: {
          master: {
          host: '127.0.0.1',
          port: 5432,
          username: 'user1',
          password: 'pass1',
          database: 'user1',
          },
          slaves: [{
            host: '127.0.0.2',
            port: 5432,
            username: 'user2',
            password: 'pass2',
            database: 'user2',
          }]
        },
        entities: ['src/**/*.entity{.ts,.js}'],
        migrations: ['./src/migrations/*.ts'],
        synchronize: true,
    })],
      controllers: [HealthCheckController],
      providers: [],
    })
    export class AppModule {}
    

    更多信息,您可以查看:typeorm Replication

    【讨论】:

    • 我无法在 TypeOrmModule.forFeature([UserEntity]) 中使用此连接。
    猜你喜欢
    • 2020-09-22
    • 2019-06-19
    • 2019-09-18
    • 2019-10-31
    • 2020-06-02
    • 1970-01-01
    • 2021-07-21
    • 2020-05-11
    • 2019-05-10
    相关资源
    最近更新 更多