Javascript 将客户端连接到MeteorJS上的不同DBs

Javascript 将客户端连接到MeteorJS上的不同DBs,javascript,meteor,client,Javascript,Meteor,Client,最近,我有一个要求,能够实现一个MeteorJS应用程序,能够根据连接的用户连接到不同的数据库 数据库的结构是相同的,只是它包含的信息发生了变化 我尝试通过DDP连接到另一个连接到必要数据库的后端,也尝试使用MongoInternals,但是,尽管用户正确登录,其他集合默认情况下仍会继续查询数据库 在服务器代码中 const connection = DDP.connect(url) Accounts.connection = Meteor.connection = connection _

最近,我有一个要求,能够实现一个MeteorJS应用程序,能够根据连接的用户连接到不同的数据库

数据库的结构是相同的,只是它包含的信息发生了变化

我尝试通过DDP连接到另一个连接到必要数据库的后端,也尝试使用MongoInternals,但是,尽管用户正确登录,其他集合默认情况下仍会继续查询数据库

在服务器代码中

const connection = DDP.connect(url)

Accounts.connection = Meteor.connection = connection

_.each(
      [
        "subscribe",
        "methods",
        "call",
        "apply",
        "status",
        "reconnect",
        "disconnect",
      ],
      function (name) {
        Meteor[name] = _.bind(Meteor.connection[name], Meteor.connection); // 55
      }
    );
ConfigApps = new Mongo.Collection("configapps")
此处,ConfigApps集合从数据库获取正确的数据,但从前端读取另一个数据库的数据

或:

同样的结果。用户可以连接,但应用程序中的所有查询只能读取一个数据库


一些信息或线索会很好。

这能回答你的问题吗?还有,我试过了,但是没有成功,MeteorJs没有从运行时读取集合的位置进行修改,同时创建两个连接,修改所有的发布将是昂贵的,因为这是一个有成千上万行代码的项目。是的,总的来说,我认为这是一个坏主意。这不是流星的本意。您确定不能只是合并数据库,而是为不同的连接用户创建单独的集合吗?(如果可能,甚至不是这样)即使是针对不同的公司,也不意味着必须在数据库级别进行分离。每个文件的公司ID都可以。否则,是的,就像ghybs建议的那样,只需为每个客户提供单独的meteor实例——例如,直接使用meteor up或docker。你真的是在试图把这一点联系在最糟糕的地方。
  var database = new MongoInternals.RemoteCollectionDriver(
      "mongodb://localhost:27017/spence-local"
    );

    ConfigApps = new Mongo.Collection("configapps", {
      _driver: database,
      _suppressSameNameError: true,
    });

    Meteor.users = new Mongo.Collection("users", {
      _driver: database,
      _suppressSameNameError: true,
    });