Postgresql 构建多租户的Nest.js应用程序(每个租户使用postgres模式和sequelise ORM)并动态切换模式?

Postgresql 构建多租户的Nest.js应用程序(每个租户使用postgres模式和sequelise ORM)并动态切换模式?,postgresql,sequelize.js,database-schema,nestjs,Postgresql,Sequelize.js,Database Schema,Nestjs,我们的团队决定在基于SaaS的应用程序中使用Nest.js,并且是node.js环境的新手。对于DB存储,我们使用了postgres,它支持每个租户的多个模式,sequelise是我们的ORM。现在我们面临一个如何动态切换模式的问题。在做了大量的研究之后,我们找不到一条切实可行的方法。下面是我们遇到的几件事 我们遇到了nest.js的动态模式切换w.r.t typeOrm,它们在中间件中动态切换模式,并重新实例化DB连接实例,通过在服务中注入或在必要时使用它 参考: (一) (二) 另一种方法

我们的团队决定在基于SaaS的应用程序中使用Nest.js,并且是node.js环境的新手。对于DB存储,我们使用了postgres,它支持每个租户的多个模式,sequelise是我们的ORM。现在我们面临一个如何动态切换模式的问题。在做了大量的研究之后,我们找不到一条切实可行的方法。下面是我们遇到的几件事

  • 我们遇到了nest.js的动态模式切换w.r.t typeOrm,它们在中间件中动态切换模式,并重新实例化DB连接实例,通过在服务中注入或在必要时使用它

    参考:

    (一)

    (二)

  • 另一种方法是根据文档使用“scope:scope.REQUEST”,它还警告性能问题

现在我的问题是,由于node.js是一个单线程环境,我想要 了解下面提到的哪种方式是 续集

  • 创建一个中间件,并将模式名称动态设置为请求头
备选案文1:

从sequelise的文档中,可以选择设置 使用“options.searchPath”为每个orm方法搜索路径(查找, 芬德尔。由于node.js是单线程的,因此在 请求头并在这样的查询中使用它,是否会导致 这个问题需要注意。在RubyonRails中,我们使用 “thread.current”来处理这个问题,有人能解释这个方法吗

备选案文2:

既然我们已经有了一个基于代码的版本,有没有一种类似于typeOrm版本的方法 如上所述,动态获取sequelise db连接 我们不改变现有代码中的任何其他地方,如果是这样,怎么办 那个

谢谢