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

时间:2012-10-29 04:06:11

标签: mongodb meteor

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

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

3 个答案:

答案 0 :(得分:17)

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

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

答案 1 :(得分:9)

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

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

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

但是,从服务器管理视图中,Meteor以这样的方式处理连接,即始终存在驻留在项目目录中的默认本地数据源(.meteor/local/db,尝试meteor mongo --url以获取流星应用程序进程运行时的mongo连接字符串)。但是,可以为部署目的指定可选数据源字符串,如这些deployment instructions中所述。

因此,您需要为您的预期设置选择一种令人毛骨悚然的“本地开发部署”方式才能正常工作。或者你去破解消息来源......不,忘掉它。您可能希望您的应用程序和客户端利用例如实时UI更新(发布),这就是Meteor应用程序与“应用程序数据源”相关联的原因,反之亦然。从其他应用程序连接时,触发模型更改的事件将不会通过这些应用程序传输。 mongoDB实例本身当然不知道。

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

答案 2 :(得分:3)

尝试这个DDP测试我一起攻击了一种桥接两个应用程序(服务器A和B)的方法。

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

另见this link