在Meteor.js中使用多个Mongodb数据库

2Meteor.Collections是否可能从2个不同的mongdb数据库服务器检索数据

Dogs=Meteor.Collection('Dogs')//mongodb://192.168.1.123:27017/dogs
猫=流星。收藏('Cats')//mongodb://192.168.1.124:27017/cats

更新

现在可以连接到远程/多个数据库:

var数据库=新的MongoInternals.RemoteCollectionDriver(“mongo url”);
MyCollection=new Mongo.Collection(“'Collection'u name'”,{{u driver:database});

其中<mongo_url&gt是一个mongodb url,如mongodb://127.0.0.1:27017/meteor(带有数据库名称)

目前这有一个缺点:没有Oplog

旧答案

目前这是不可能的。每个meteor应用程序都绑定到一个数据库

有几种方法可以解决这个问题,但可能更复杂的是它的价值:

一个选项-使用单独的Meteor应用程序

在您的其他meteor应用程序中(例如,在同一台机器上的端口6000处运行)。您仍然可以具有反应性,但需要通过方法调用代理插入、删除和更新

服务器:

Cats=Meteor.Collection('Cats'))
Meteor.publish(“cats”,function(){
返回猫。查找();
});
Meteor.methods('updateCat,function(id,changes){
update({u id:id},{$set:changes});
});

您当前的Meteor应用程序:

var connection=DDP.connect("http://localhost:6000");
连接。订阅(“猫”);
Cats=Meteor.Collection('Cats',{connection:connection});
//更新集合的步骤
Cats.call("updateCat",<cat_id>,<changes);

另一个选项-自定义mongodb连接

这将使用节点js mongodb本机驱动程序

这是连接到数据库,就像在任何其他节点js应用程序中一样

没有可用的反应性,您不能使用新Meteor.Collection类型集合

var mongodb=Npm.require(“mongodb”)//或者var mongodb=Meteor.require("mongodb")//如果您在大气中使用npm包
var db=mongodb.db;
var mongoclient=mongodb.mongoclient;
var Server=mongodb.Server;
var db_connection=newdb('cats',newserver('127.0.0.1',27017,{auto_reconnect:false,poolSize:4}),{w:0,native_解析器:false});
db.open(函数(err,db){
//连接到数据库“猫”
db.authenticate(“<db username>”、“<db password>”、函数(错误、结果){
//你可以在这里查询吗
db.close();
});
});

发表评论