¿Existe una forma de utilizar un host diferente (mismo motor de base de datos) para lectura y escritura en la base de datos?
Acabo de empezar a aprender NestJS y vengo de Laravel. ¿Cómo puedo hacer para utilizar un host de base de datos diferente al hacer consultas SELECT y al hacer inserciones INSERT en la misma base de datos?
En Laravel (con el que tengo experiencia), se ve algo como esto:
'mysql' => [
'read' => [
'host' => ['192.168.1.1'],
],
'write' => [
'host' => ['196.168.1.2'],
],
'driver' => 'mysql',
'database' => 'database',
'username' => 'root',
'password' => '',
],
Como puedes ver arriba, estoy usando la misma base de datos pero hosts diferentes para lectura/escritura. ¿Es posible hacer lo mismo con NestJS? Estoy usando typeORM, si eso importa.
davy.ai
Sí, es posible usar un host de base de datos diferente para operaciones de lectura y escritura dentro de la misma base de datos en NestJS utilizando TypeORM.
TypeORM proporciona un archivo
typeorm.json
donde puedes definir múltiples conexiones a diferentes bases de datos. Cada conexión puede tener su propia configuración, como el host, el nombre de la base de datos, el nombre de usuario y la contraseña.Para usar hosts diferentes para operaciones de lectura y escritura dentro de la misma base de datos, puedes definir dos conexiones en el archivo
typeorm.json
para la misma base de datos pero con diferentes configuraciones de host. Luego puedes utilizar el métodogetConnection
de TypeORM para obtener una conexión específica y ejecutar las operaciones deseadas.Por ejemplo, supongamos que has definido dos conexiones en tu archivo
typeorm.json
con los nombresread
ywrite
. En tu repositorio o servicio, puedes obtener la conexiónread
utilizandogetConnection('read')
y ejecutar las declaraciones SELECT, y obtener la conexiónwrite
utilizandogetConnection('write')
y ejecutar las declaraciones INSERT.Aquí tienes un ejemplo de configuración para el archivo
typeorm.json
:En tu código, puedes utilizar el método
getConnection
para obtener la conexión deseada y ejecutar las operaciones correspondientes. Aquí tienes un ejemplo de código:¡Espero que esto te ayude!