Để trả lời câu hỏi của riêng tôi:
Hiện tại, không có cách nào để khởi tạo kho TypeORM với các lược đồ khác nhau trong thời gian chạy mà không cần tạo kết nối mới.
Vì vậy, hai tùy chọn duy nhất mà nhà phát triển còn lại cho việc thuê nhiều người dựa trên lược đồ là:
- Thiết lập các kết nối mới để kết nối với các lược đồ khác nhau trong cùng một db khi chạy. Ví dụ. xem NestJS Yêu cầu đa kênh theo phạm vi cho nhiều cơ sở dữ liệu . Tuy nhiên, người ta chắc chắn nên cố gắng sử dụng lại các kết nối và lưu ý về giới hạn kết nối .
- Từ bỏ ý tưởng làm việc với RepositoryApi và hoàn nguyên về sử dụng
createQueryBuilder
(hoặc thực thi các truy vấn SQL quaquery()
).
Để nghiên cứu thêm, đây là một số vấn đề TypeORM GitHub theo dõi ý tưởng thay đổi lược đồ cho các kết nối hoặc kho lưu trữ hiện có trong thời gian chạy (tương tự như những gì được yêu cầu trong OP):
- Kiến trúc nhiều người thuê sử dụng lược đồ. # 4786
đề xuất một cái gì đó như
this.photoRepository.useSchema('customer1').find()
- Xử lý lược đồ cơ sở dữ liệu # 3067
đề xuất một cái gì đó như
getConnection().changeDefaultSchema('myschema')
- Thay đổi thời gian chạy của giản đồ # 4473
- Thêm khả năng đặt giản đồ postgresql cho mỗi cuộc gọi # 2439
P.S. Nếu TypeORM quyết định ủng hộ ý tưởng được thảo luận trong OP, tôi sẽ cố gắng cập nhật câu trả lời này.