Um meine eigene Frage zu beantworten:
Im Moment gibt es keine Möglichkeit, TypeORM-Repositories mit unterschiedlichen Schemas zur Laufzeit, ohne neue Verbindungen herzustellen.
Die einzigen beiden Optionen, die einem Entwickler für die schemabasierte Mandantenfähigkeit bleiben, sind also:
- Neue Verbindungen einrichten, um zur Laufzeit eine Verbindung mit verschiedenen Schemas innerhalb derselben Datenbank herzustellen. Z.B. siehe NestJS Request Scoped Multitenancy for Multiple Databases . Allerdings sollte man sich auf jeden Fall um die Wiederverwendung von Verbindungen bemühen und Verbindungslimits .
- Aufgeben der Idee, mit der RepositoryApi und zurück zur Verwendung von
createQueryBuilder
(oder Ausführen von SQL-Abfragen überquery()
).
Zur weiteren Recherche finden Sie hier einige TypeORM-GitHub-Probleme, die die Idee verfolgen, das Schema für vorhandene Verbindungen oder Repositories zur Laufzeit zu ändern (ähnlich wie im OP gefordert):
- Mehrinstanzenfähige Architektur mit Schema. #4786
schlägt so etwas wie
this.photoRepository.useSchema('customer1').find()
vor - Handhabung von Datenbankschemata #3067
schlägt so etwas wie
getConnection().changeDefaultSchema('myschema')
vor - Laufzeitänderung von Schema Nr. 4473
- Fügt eine Möglichkeit hinzu, das Postgresql-Schema pro Aufruf #2439 festzulegen
P.S. Wenn TypeORM beschließt, die im OP diskutierte Idee zu unterstützen, werde ich versuchen, diese Antwort zu aktualisieren.