我刚刚开始使用 Meteor 和 MongoDB。我想知道是否有办法同时使用两个或多个数据库。 这些数据库必须在运行时生成。
这个想法是我有一些用户组绝对不允许访问其他用户组的数据。如果还有其他方法请告诉我。
最佳答案
好吧,我已经做到了......很久以前,但我仍然想在这里发布答案。
你需要的是这样的:
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 db。客户端不关心您使用哪个驱动程序(仅在服务器端使用驱动程序)。想象一下用户注销并登录到另一个客户的情况。现在他正在使用不同的数据库,但仅在服务器上。在客户端上,您仍然只有 1 个数据库和 1 个名为 Products
的集合。知道什么?确切地!您既有来自老客户的数据,也有来自新客户的数据。
这不是数据安全问题,但您也会看到这两个数据(这显然是错误的)。为了防止这种情况,您需要在客户端上有 2 个单独的集合。要实现此目的,请将 customerId
添加到集合中。
就是这样。
关于javascript - 具有多个 Mongo DB 的 Meteor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32250463/