我如何在meteor应用程序之间共享MongoDB集合?

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

我试图在两个不同的应用程序中创build具有相同名称的集合,但发现meteor将保持数据分离。 任何想法我可以做什么? 谢谢。

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

然后运行meteor应用程序,它会改变meteor默认的数据库使用。 所以共享数据库或集合不会是一个问题! 出于pipe理的原因,除了使用meteor内部的MongoDB之外,我会使用我自己pipe理的单个MongoDB服务器。

一个合理的问题,可能值得超过这个答案的讨论:

MongoDB连接由Meteor应用程序本身处理,就我所了解和理解的情况而言,这是Meteors哲学的一部分,它的目标是描述如下的方法: 一个数据源服务于一个属于它的应用程序,但许多客户端订阅它

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

然而,从服务器pipe理视图来看,Meteor会以这种方式处理连接,总是有默认的本地数据源驻留在项目目录中( .meteor/local/db ,尝试使用meteor mongo --url来获取mongo连接string,而meteor应用程序正在运行)。 但是,为了部署的目的,可以指定一个可选的数据源string,如这些部署指令中所述 。

所以你需要select一个令人毛骨悚然的“本地开发部署”的方式来为你想要的设置工作。 或者你去破解消息来源…不,忘了它。 您可能希望您的应用程序和客户端利用例如实时UI更新(发布),这就是Meteor应用程序与“应用程序数据源”绑定的原因,反之亦然。 从另一个应用程序进行连接时,触发模型中更改的事件不会通过这些应用程序传输。 mongoDB实例本身当然不知道。

我敢肯定,核心团队不会将数据源连接暴露给configuration部分, 除非他们通过某种模块概念来扩展其架构,这种模块概念提供了跨meteor实例的核心模型/集合抽象的通用服务层 – at最less支持对发布/订阅事件的认识。

尝试这个DDPtesting,我一起砍了一个桥梁两个应用程序(服务器A和B)的方式。

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

看到这个链接