For at besvare mit eget spørgsmål:
I øjeblikket er der ingen måde at instansiere TypeORM-lagre med forskellige skemaer under kørsel uden at skabe nye forbindelser.
Så de eneste to muligheder, som en udvikler står tilbage med for skemabaseret multilejemål er:
- Opsætning af nye forbindelser for at oprette forbindelse til forskellige skemaer inden for den samme database under kørsel. For eksempel. se NestJS Request Scoped Multitenancy for Multiple Databases . Man bør dog bestemt stræbe efter at genbruge forbindelser og og være opmærksom på forbindelsesgrænser .
- Opgivelse af ideen om at arbejde med RepositoryApi og vende tilbage til at bruge
createQueryBuilder
(eller udfører SQL-forespørgsler viaquery()
).
For yderligere forskning er her nogle TypeORM GitHub-problemer, der sporer ideen om at ændre skemaet for en eksisterende forbindelse eller repository under kørsel (svarende til det, der anmodes om i OP):
- Multi-tenant-arkitektur ved hjælp af skema. #4786
foreslår noget som
this.photoRepository.useSchema('customer1').find()
- Håndtering af databaseskemaer #3067
foreslår noget som
getConnection().changeDefaultSchema('myschema')
- Kørselsændring af skema #4473
- Tilføj en mulighed for at indstille postgresql-skema pr. opkald #2439
P.S. Hvis TypeORM beslutter sig for at støtte ideen diskuteret i OP, vil jeg forsøge at opdatere dette svar.