Per rispondere alla mia stessa domanda:
Al momento non è possibile creare un'istanza di repository TypeORM con schemi diversi in fase di esecuzione senza creare nuove connessioni.
Quindi le uniche due opzioni che rimangono a uno sviluppatore per la multi-tenancy basata su schema sono:
- Impostazione di nuove connessioni per connettersi con schemi diversi all'interno dello stesso db in fase di esecuzione. Per esempio. vedere NestJS Request Scoped Multitenancy per più database . Tuttavia, si dovrebbe assolutamente sforzarsi di riutilizzare le connessioni ed essere consapevoli di limiti di connessione .
- Abbandonare l'idea di lavorare con RepositoryApi e tornare a usare
createQueryBuilder
(o eseguendo query SQL tramitequery()
).
Per ulteriori ricerche, ecco alcuni problemi di TypeORM GitHub che tengono traccia dell'idea di modificare lo schema per connessioni o repository esistenti in fase di esecuzione (simile a quanto richiesto nell'OP):
- Architettura multi-tenant che utilizza lo schema. #4786
propone qualcosa come
this.photoRepository.useSchema('customer1').find()
- Gestione degli schemi di database #3067
propone qualcosa come
getConnection().changeDefaultSchema('myschema')
- Modifica in fase di esecuzione dello schema #4473
- Aggiungi la possibilità di impostare lo schema postgresql per chiamata #2439
PS Se TypeORM decide di supportare l'idea discussa nell'OP, proverò ad aggiornare questa risposta.