typescript - Hvordan konfigurere TypeORM i NestJS for å bruke Postgres-replikasjon?


Jeg har satt opp replikering for Postgres-databasen i AWS. Hvordan konfigurere TypeORM for å bruke lese-/skriverreplikater i NestJs.

Min nåværende kode ser slik ut. Hvordan kan jeg konvertere denne flere tilkoblingen til å bruke replikering.

@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 {}

bruker.modul.ts

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

bruker.tjeneste.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,
  ) {}

Hvordan bruke slave/master-tilkobling i user.service.ts-filen?

Svar #1

For å konfigurere replikasjonsforbindelsesinnstillinger kan du gjøre:

 @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 {}

For mer informasjon kan du sjekke: typeorm Replikasjon

Relaterte artikler