Om mijn eigen vraag te beantwoorden:
Op dit moment is er geen manier om TypeORM-repositories met verschillende schema's tijdens runtime zonder nieuwe verbindingen te maken.
Dus de enige twee opties die een ontwikkelaar over heeft voor op schema's gebaseerde multi-tenancy zijn:
- Nieuwe verbindingen instellen om tijdens runtime verbinding te maken met verschillende schema's binnen dezelfde db. bijv. zie NestJS Request Scoped Multitenancy voor meerdere databases . Men moet echter zeker streven naar hergebruik van verbindingen en zich bewust zijn van verbindingslimieten .
- Het idee van het werken met de RepositoryApi een> en terugkeren naar het gebruik van
createQueryBuilder
(of het uitvoeren van SQL-query's via query()
).
Voor verder onderzoek zijn hier enkele TypeORM GitHub-problemen die het idee volgen om het schema voor bestaande verbindingen of repositories tijdens runtime te wijzigen (vergelijkbaar met wat wordt gevraagd in de OP):
- Multi-tenant architectuur met schema. #4786
stelt iets voor als
this.photoRepository.useSchema('customer1').find()
- Behandeling van databaseschema's #3067
stelt iets voor als
getConnection().changeDefaultSchema('myschema')
- Runtime wijziging van schema #4473
- Voeg een mogelijkheid toe om postgresql-schema per oproep in te stellen #2439
PS Als TypeORM besluit het idee te ondersteunen dat in de OP wordt besproken, zal ik proberen dit antwoord bij te werken.