Loopback多租户数据库交换

6
我想在我的LoopBack应用程序中实现多租户功能。目前,我正在尝试使用中间件根据请求的域来重新定义我的数据源以指向我的mongodb服务器上的不同数据库。代码可以运行,但似乎没有真正改变数据源。相反,它始终使用datasources.json中定义的数据源。
目前,我的做法是,所有模型都引用“my_db”,而我希望为每个租户在我的Mongo服务器上有一个数据库。
var dataSourceObj = {
        my_db:{
          url: process.env.MONGOLAB_URI,
          connector: "mongodb",
          name: "my_db",
          database: tenant
        }
      }

      Object.keys(dataSourceObj).forEach(function(dataSource) {

        app.dataSources[dataSource].adapter.settings = dataSourceObj[dataSource];
        app.dataSources[dataSource].adapter.clientConfig = dataSourceObj[dataSource];
        app.dataSources[dataSource].settings = dataSourceObj[dataSource];
        app.dataSources[dataSource].connector.settings = dataSourceObj[dataSource];
        app.dataSources[dataSource].connector.clientConfig = dataSourceObj[dataSource];

      });

有人有什么想法吗?这种方法是否是进行多租户的愚蠢方式?

谢谢!


1
你代码中的 tenant 是什么? - Jordan Kasper
你找到解决方案了吗? - JP.
1个回答

1

Paulo,我已经使用以下命令测试了您的项目:'curl --data "username=paulomcnally1&message=Hello world" http://127.0.0.1:4000/demo1/tweets & curl --data "username=paulomcnally2&message=Hello world" http://127.0.0.1:4000/demo2/tweets &'。两个推文都写入了demo2数据库。并发有问题还是我做错了什么? - Musma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接