我目前正在开发Node js和MongoDB中的库存管理软件。我是MongoDB的新手,在我的大多数项目中都使用过Oracle和MySQL。
是否可以为使用我的软件的每个客户创建一个单独的数据库模式,每个客户只能访问他的数据库模式和集合的副本?
相当于在Oracle数据库中选择数据 从User1.table中选择*, 从User2.table等中选择*
另外,如果有可能,如何使用像mongoose这样的节点js mongo db client来实现?
我查看了MongoDB文档,但主要讨论了如何将用户添加到数据库以进行授权。
如果这似乎是一个愚蠢的问题,我道歉,但如果有人能指出我正确的方向,我会很感激。
答案 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);
}
另外,请注意,首次在特定数据库的集合中插入记录时,将创建数据库。
仅连接数据库是不够的,还必须插入记录。
根据我之前的示例,您还可以将模式参数传递给函数,为每个用户的配置文件量身定制,并在连接到该数据库后触发插入语句。