2 Meteor.Collections
是否可能从2个不同的mungdb数据库服务器检索数据?
Dogs = Meteor.Collection('dogs') // mongodb://192.168.1.123:27017/dogs
Cats = Meteor.Collection('cats') // mongodb://192.168.1.124:27017/cats
2 Meteor.Collections
是否可能从2个不同的mungdb数据库服务器检索数据?
Dogs = Meteor.Collection('dogs') // mongodb://192.168.1.123:27017/dogs
Cats = Meteor.Collection('cats') // mongodb://192.168.1.124:27017/cats
3条答案
按热度按时间qij5mzcb1#
答案是是:可以设置多个Meteor. Collection从不同的mungdb数据库服务器检索数据。
正如@Akshat给出的答案,您可以初始化自己的
MongoInternals.RemoteCollectionDriver
示例,通过该示例可以创建Mongo.Collection
。但这里还有一些要说的。与@Akshat的回答相反,我发现在这种情况下,Oplog支持仍然可用。
初始化自定义
MongoInternals.RemoteCollectionDriver
时,请勿忘记指定操作日志URL:引擎盖下
在
RemoteCollectionDriver
的构造函数中,将创建一个底层MongoConnection
:棘手的是:如果使用提供的
oplogUrl
创建MongoConnection
,则将初始化OplogHandle
,并开始跟踪操作日志(源代码):正如blog所述:
Meteor.publish
在内部调用Cursor.observeChanges
以创建ObserveHandle
示例,该示例自动跟踪数据库中将来发生的任何更改。目前有两种观察者驱动程序:传统的
PollingObserveDriver
采用轮询和比较策略,OplogObseveDriver
有效地使用操作日志跟踪来监视数据更改。为了决定应用哪一个,observeChanges
执行以下过程(源代码):为了使
canUseOplog
为真,需要满足几个要求,最低要求是:底层MongoConnection
示例应具有有效的OplogHandle
。这正是我们需要在创建MongoConnection
时指定oplogUrl
的原因cnh2zyt32#
这实际上是可能的,使用一个内部接口:
i1icjdpr3#
更新
现在可以连接到远程/多个数据库:
其中
<mongo_url>
是一个mongodburl,例如mongodb://127.0.0.1:27017/meteor
(带有数据库名称)目前这种做法有一个缺点:无操作日志
旧答案
目前这是不可能的,因为每个流星应用程序都绑定到一个数据库。
有几种方法可以绕过这个问题,但它可能更复杂,它的价值:
一个选项-使用单独的Meteor应用程序
在你的另一个meteor应用程序中(例如在同一台机器上运行在6000端口),你仍然可以有React,但是你需要通过一个方法调用来代理插入、删除和更新
服务器:
您当前的Meteor应用程序:
另一个选项-自定义mongodb连接
这使用节点js mongodb本机驱动程序。
这是连接到数据库,就像您在任何其他节点js应用程序中所做的那样。
new Meteor.Collection
类型集合。