我希望使用NestJS 6的新请求注入范围功能实现多租户NestJS解决方案。
对于任何给定的服务,我认为我可以像这样做:
然后,在构造函数中,从请求中确定租户,连接到适当的数据库,并为新连接实例化存储库。
我在想这是否是最直接的方法?
而不是更新每个服务,是否有可能覆盖连接提供程序并将其范围限定为请求?
对于任何给定的服务,我认为我可以像这样做:
@Injectable({scope: Scope.REQUEST})
export class ReportService implements OnModuleInit { ... }
然后,在构造函数中,从请求中确定租户,连接到适当的数据库,并为新连接实例化存储库。
我在想这是否是最直接的方法?
而不是更新每个服务,是否有可能覆盖连接提供程序并将其范围限定为请求?
createConnection
(为租户创建连接)时,TypeORM 在幕后存储连接实例,并且对getConnection
(和工厂)的后续调用将再次返回相同的连接实例,因此您只需一次创建连接,而不是在每个请求中都创建连接。因此,您每个租户只需创建一个连接,而不是每个请求都创建连接。但是,您可能会遇到单个服务器上有太多连接的内存问题,不幸的是,无法为现有连接切换模式(请参见 https://dev59.com/clMH5IYBdhLWcg3w9mB9)。 - Felix K.