Para responder a mi propia pregunta:
Por el momento no hay forma de instanciar repositorios TypeORM con diferentes esquemas en tiempo de ejecución sin crear nuevas conexiones.
Por lo tanto, las únicas dos opciones que le quedan a un desarrollador para la tenencia múltiple basada en esquemas son:
- Configurar nuevas conexiones para conectarse con diferentes esquemas dentro de la misma base de datos en tiempo de ejecución. P.ej. consulte NestJS Request Scoped Multitenancy para múltiples bases de datos . Sin embargo, uno definitivamente debe esforzarse por reutilizar las conexiones y ser consciente de límites de conexión .
- Abandonar la idea de trabajar con RepositoryApi y volver a usar
createQueryBuilder
(o ejecutando consultas SQL a través dequery()
).
Para una mayor investigación, aquí hay algunos problemas de TypeORM GitHub que rastrean la idea de cambiar el esquema para conexiones o repositorios existentes en tiempo de ejecución (similar a lo que se solicita en el OP):
- Arquitectura multiusuario mediante esquema. #4786
propone algo como
this.photoRepository.useSchema('customer1').find()
- Manejo de esquemas de bases de datos #3067
propone algo como
getConnection().changeDefaultSchema('myschema')
- Cambio en tiempo de ejecución del esquema #4473
- Agregue la capacidad de configurar el esquema postgresql por llamada #2439
PD Si TypeORM decide apoyar la idea discutida en el OP, intentaré actualizar esta respuesta.