流星与多个mongodb db



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

这个想法是,我有几个用户组,绝对不允许访问其他用户组的数据。如果有别的办法,请告诉我。

我已经做到了…很久以前,但我仍然想把答案贴在这里。

你需要的是这样的东西:

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数据库。客户端并不关心您使用的是哪个驱动程序(仅在服务器端使用驱动程序)。假设一个用户注销并登录到另一个客户。现在他正在使用一个不同的数据库,但只在服务器上。在客户机上,您仍然只有一个数据库和一个名为Products的集合。知道什么?完全正确!您有两个数据,一个来自老客户,另一个来自新客户。

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

最新更新