私自身の質問に答えるには:
現時点では、TypeORMリポジトリをインスタンス化する方法はありません。 a> 新しい接続を作成せずに、実行時にさまざまなスキーマを使用します。
したがって、スキーマベースのマルチテナンシーのために開発者に残されているオプションは次の2つだけです。
- 実行時に同じデータベース内の異なるスキーマに接続するための新しい接続を設定します。例えば。 NestJS Request Scoped Multitenancy for MultipleDatabases> 。ただし、接続の再利用に確実に取り組み、接続制限 。
- RepositoryApiを使用するというアイデアを放棄するa>
createQueryBuilder
の使用に戻ります (またはquery()
を介してSQLクエリを実行する 。
さらに調査するために、実行時に既存の接続またはリポジトリのスキーマを変更するというアイデアを追跡するTypeORM GitHubの問題をいくつか示します(OPで要求されたものと同様):
- スキーマを使用したマルチテナントアーキテクチャ。 #4786
this.photoRepository.useSchema('customer1').find()
のようなものを提案します - データベーススキーマの処理#3067
getConnection().changeDefaultSchema('myschema')
のようなものを提案します - スキーマ#4473の実行時の変更
- 呼び出しごとにpostgresqlスキーマを設定する機能を追加する#2439
P.S. TypeORMがOPで議論されたアイデアをサポートすることを決定した場合、私はこの回答を更新しようとします。