20

我希望能够为我的项目提供一个管理应用程序和一个客户端应用程序。理想情况下,我希望能够拥有一个共享的 MongoDB 集合。我怎么能做到这一点?

我尝试在两个不同的应用程序中创建具有相同名称的集合,但发现 Meteor 会将数据分开。知道我能做什么吗?谢谢。

4

3 回答 3

17
export MONGO_URL=mongodb://localhost:3002/meteor

然后运行meteor app,它会改变meteor使用的默认数据库。所以共享数据库或集合不会成为问题!出于管理原因,我会使用由我自己管理的单个 MongoDB 服务器,而不是使用流星的内部 MongoDB。

于 2012-10-30T04:50:34.987 回答
9

一个合理的问题,可能值得在此答案之外进行讨论:

MongoDB 连接由 Meteor 应用程序进程本身处理,据我阅读和理解,这是 Meteors 哲学的一部分,其目标是一种方法,可能被描述为:一个数据源服务于属于它的一个应用程序,但许多客户订阅它

记住这一点,在一个应用程序(即您的 Meteor 应用程序)中结合“管理员”和“客户端”客户端可能是首选方式。

然而,从服务器管理的角度来看,Meteor 处理连接的方式是始终存在位于项目目录中的默认本地数据源(.meteor/local/db尝试meteor mongo --url在流星应用程序进程运行时获取 mongo 连接字符串)。但是,人们可以为部署目的指定一个可选的数据源字符串,如这些部署说明中所述。

因此,您需要为您的预期设置选择一种有点令人毛骨悚然的“本地开发部署”方式才能正常工作。或者你去破解资源然后......不,算了吧。您可能希望您的应用程序和客户端利用实时 UI 更新(发布)等优势,这就是为什么 Meteor 应用程序与“应用程序数据源”绑定的原因,反之亦然。从另一个应用程序连接时,触发模型更改的事件不会在这些应用程序之间传输。mongoDB 实例本身当然不知道这一点。

我确信核心团队不会出于考虑的原因将数据源连接暴露给配置部分,除非他们使用某种模块概念扩展他们的架构,该模块概念提供跨 Meteor 实例的核心模型/集合抽象的公共服务层- 在对发布/订阅事件的支持意识最少。

于 2012-10-29T22:01:18.127 回答
4

试试我一起破解的这个 DDP 测试,以桥接两个应用程序(服务器 A 和 B)。

两台服务器都可以操作数据,但数据只存储在服务器 A 上的一个集合中。

也可以看看这个链接

于 2015-06-12T07:02:21.957 回答