带有多个Mongo DB的Meteor

时间:2015-08-27 13:16:38

标签: javascript node.js mongodb meteor database

我刚开始使用Meteor和MongoDB。我想知道是否有一种方法可以同时使用两个或更多DB。 这些DB必须在运行时生成。

我的想法是我有一些用户组绝对不允许访问其他用户组的数据。如果有另一种方式告诉我。

1 个答案:

答案 0 :(得分:0)

嗯,我已经做到了......很久以前我仍然想在这里发布答案。

你需要的是这样的东西:

dbCustomer = new MongoInternals.RemoteCollectionDriver(
    CUSTOMER_DB_URL + customerId
);

这样您就可以创建在创建新集合时使用的自定义驱动程序:

Products['procucts' + customerId] = new Meteor.Collection(
    'products' + customerId,
    {
        _driver: dbCustomer,
        idGeneration: 'STRING'
    }
);

那么,为什么我这样做Products['productus' + customerId]而不仅仅是Products

在这里,您必须了解客户端上的MinoMongo数据库。客户端不关心您使用的是哪个驱动程序(仅在服务器端使用驱动程序)。想象一下用户注销并登录到另一个客户的情况。现在他正在使用不同的数据库但仅在服务器上。在客户端上,您仍然只有1个数据库,其中包含1个名为Products的集合。什么知道的?究竟!您拥有来自旧客户的数据和来自新客户的数据。

这不是数据安全问题,但你也会看到这两个数据(这显然是错误的)。为防止这种情况,您需要在客户端上有两个单独的集合要实现此目的,请将customerId添加到集合中。

就是这样。