typescript - ¿Cómo configurar TypeORM en NestJS para usar replicación de postgres?
He configurado la replicación para la base de datos Postgres en AWS. Cómo configurar TypeORM para usar réplicas de lectura/escritura en NestJs.
Mi código actual se ve así. Cómo convertir esta conexión múltiple para usar replicaciones.
@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 {}
usuario.módulo.ts
@Module({
imports: [
TypeOrmModule.forFeature([UserEntity]),
],
exports: [],
controllers: [UserController],
})
export class UserModule {}
usuario.servicio.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,
) {}
¿Cómo usar la conexión esclavo/maestro en el archivo user.service.ts?
Respuesta #1
Para configurar los ajustes de conexión de replicación, puedes hacer:
@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 {}
Para más información, puedes consultar: typeorm Replication
