javascript - 具有多个 Mongo DB 的 Meteor

标签 javascript node.js mongodb meteor database

我刚刚开始使用 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/

相关文章:

javascript - MongoDB 聚合与带有日期的对象属性嵌套数组

javascript - 使用 Jquery 定时淡入淡出

javascript - Angular 2 和 Express 日期格式 MongoDB

mongodb - CMD dockerfile未执行

javascript - 使用parse.com云代码发送推送

javascript - Chart.js绘制数学函数

node.js - Express 中的查询参数

javascript - 从 mongo 正则表达式中删除引号

node.js - npm 缓存和全局文件夹之间的区别

node.js - 如何在 puppeteer 中检查元素是否包含某个字符串?