【发布时间】:2018-08-14 19:09:16
【问题描述】:
首先,我给大家介绍一下我们的项目:
我们有一个应用程序,它有两个用户角色:商家和买家。
一位商人注册并将他的贸易信息存储在他的帐户中。 买家还可以登录他自己的帐户并访问他与该商家的购买信息。一个买家可能与多个商家打交道。
我们正在考虑一个 mongo 数据库结构,其中通用 mongo db 只有两个键值对:
merchant_id 到数据库名称。 (哪个商家被分配了哪个db,因为每个商家应该有单独的db)
buyer_id 到商家 ID。 (假设买家 Ram 与两个商家 M01 和 M02 有关系)。
我们希望每个商家在登录时只能看到自己数据库中的数据。
但是当买家登录时,他应该会看到与他有业务关系的商家数据库中的数据。 (Ram 应该会看到从 M01 和 M02 的数据库中提取的数据。
我们希望每个在我们的门户网站上注册的商家都有一个单独的数据库。 (因为每个商家都有很多交易)。我们已经在mongoose ORM的帮助下定义了所有的函数,例如计算和所有的逻辑部分。由于我们已经定义了一个全局 db.js,然后在模型、模式和路由的帮助下,我们正在使用 mongoose 与数据库的连接请求。
以下是我们的问题:
当我们的服务器启动时,它会连接到在 db.js 文件中定义的数据库,并且存在到全局数据库的连接请求,或者我们说是主数据库。
我们如何连接多个数据库,同时保持连接到主数据库? (关闭连接并连接到新数据库会导致我们失去与主数据库的连接[拥有我们所有的注册数据],因此不是解决方案)。我们希望在每个商家注册后为每个商家创建一个新数据库,基于某个键(如 IDCardNo)创建一个新的单独数据库,然后动态定义所有计算和逻辑部分它与该特定数据库一起执行。
有一件事是我们使用 mongo-client 而不是 mongoose 来创建一个新数据库,但是因为我们想让所有主数据库计算和逻辑部分(之前编写的)动态操作而被卡住了。我们的问题是:我们如何定义多个数据库连接请求到那个 db.js 文件,它本质上是静态的,而且我们所有的逻辑和计算部分都是基于那个猫鼬连接而不是作为一个单独的连接编写的功能?
我刚刚在互联网上找到了一个解决方案,它为每个拥有 mongoose 的用户以及 node_modules 文件夹分别创建不同的文件夹,但我们不能在这里这样做,因为有太多的连接请求会阻碍服务器性能和存储负载会增加。
我找到了另一个解决方案:将 mongoose 更改为 mongo-client。这种解决方案非常昂贵,因为这意味着我们必须重做许多关键代码——类似于重新制作产品。
我希望您帮助我们解决这个问题并构建这个系统。
【问题讨论】:
标签: javascript node.js mongodb mongoose