Aby odpowiedzieć na moje własne pytanie:
W tej chwili nie ma możliwości utworzenia instancji Repozytoria TypeORM z różnymi schematami w czasie wykonywania bez tworzenia nowych połączeń.
Tak więc jedynymi dwiema opcjami, jakie pozostają deweloperowi w przypadku wielodostępności opartej na schemacie, są:
- Konfigurowanie nowych połączeń w celu połączenia z różnymi schematami w tej samej bazie danych w czasie wykonywania. Np. zobacz Wielodostępność w zakresie żądania NestJS dla wielu baz danych . Należy jednak zdecydowanie dążyć do ponownego wykorzystania połączeń i być świadomym limity połączeń .
- Porzucenie pomysłu pracy z RepositoryApi i powrót do używania
createQueryBuilder
(lub wykonywanie zapytań SQL przezquery()
).
Aby uzyskać dalsze badania, oto kilka problemów TypeORM GitHub, które śledzą pomysł zmiany schematu dla istniejących połączeń lub repozytoriów w czasie wykonywania (podobne do tego, co jest wymagane w OP):
- Architektura wielodostępna przy użyciu schematu. #4786
proponuje coś takiego jak
this.photoRepository.useSchema('customer1').find()
- Obsługa schematów baz danych #3067
proponuje coś takiego jak
getConnection().changeDefaultSchema('myschema')
- Zmiana schematu w czasie wykonywania #4473
- Dodaj możliwość ustawienia schematu postgresql na wywołanie #2439
PS Jeśli TypeORM zdecyduje się wesprzeć pomysł omówiony w OP, postaram się zaktualizować tę odpowiedź.