MongoDB中的用户特定数据库

时间:2015-02-20 12:29:17

标签: node.js mongodb mongoose

我目前正在开发Node js和MongoDB中的库存管理软件。我是MongoDB的新手,在我的大多数项目中都使用过Oracle和MySQL。

是否可以为使用我的软件的每个客户创建一个单独的数据库模式,每个客户只能访问他的数据库模式和集合的副本?

相当于在Oracle数据库中选择数据 从User1.table中选择*, 从User2.table等中选择*

另外,如果有可能,如何使用像mongoose这样的节点js mongo db client来实现?

我查看了MongoDB文档,但主要讨论了如何将用户添加到数据库以进行授权。

如果这似乎是一个愚蠢的问题,我道歉,但如果有人能指出我正确的方向,我会很感激。

1 个答案:

答案 0 :(得分:1)

在开始投入大量时间进行项目开发之前,请查看您尝试构建的方案的其他可能方法。

我在SO上进行了快速搜索,发现了一些类似场景的其他线程:

每当您在connect对象上调用mongoose方法时,您要么连接到现有数据库,要么在它已经存在的情况下创建它。

您可以使用一个函数,允许您使用名称传入名称参数并以编程方式创建数据库:

function createDatabase(name) {
    var conn_string = 'mongodb://localhost/';

    if (typeof name == 'string') {
        conn_string += name;
    }else{
        return false;
    }

    mongoose.connect(conn_string);  
}

另外,请注意,首次在特定数据库的集合中插入记录时,将创建数据库。

仅连接数据库是不够的,还必须插入记录。

根据我之前的示例,您还可以将模式参数传递给函数,为每个用户的配置文件量身定制,并在连接到该数据库后触发插入语句。