我想要的是有任意的数据库(例如50)与相同的集合(相同的模式,确切的模型,不同的数据)和1个节点(expressjs + mongoose)的web应用程序。
简化案例示例:
我有:
*单个Web应用程序(expressjs + mongoose),具有User
模型。
- 50个域,50个数据库,
users
集合。
我想要达到的行为: GET /api/users/
http请求正在到达其中一个域(test-domain-39.myapp.com)- 应用程序获得请求的域名(test-domain-39),当我在
users.controller
中执行User.find({isActive: true})
时,mongoose不知何故理解了它想要查询数据库39
因此,我只需要一个抽象。我将数据库名称传递给mongoose,并继续使用User
模型(就像我们通常在拥有单个数据库连接时所做的那样),如果需要,mongoose将创建连接(如果这是对特定数据库的第一个请求),并在连接池中为下一个请求保持连接等。
实现这一目标最简单有效的方法是什么?
先谢谢林田了!
2条答案
按热度按时间58wvjzkj1#
恕我直言,虽然MongoDB可以做到这一点,但我不建议为每个域维护一个单独的数据库,特别是如果您希望拥有大量的数据库。您是否考虑过使用多租户模型?
下面的示例代码将用户'Alex'添加到两个不同的数据库“domainOne”和“domainTwo”中。
sulc1iza2#
这是我如何实现我的项目: