2Meteor.Collections
是否可能从两个不同的mongdb数据库服务器检索数据?
Dogs = Meteor.Collection('dogs') // mongodb://192.168.1.123:27017/dogs
Cats = Meteor.Collection('cats') // mongodb://192.168.1.124:27017/cats
2Meteor.Collections
是否可能从两个不同的mongdb数据库服务器检索数据?
Dogs = Meteor.Collection('dogs') // mongodb://192.168.1.123:27017/dogs
Cats = Meteor.Collection('cats') // mongodb://192.168.1.124:27017/cats
现在可以连接到远程/多个数据库:
var database = new MongoInternals.RemoteCollectionDriver("<mongo url>");
MyCollection = new Mongo.Collection("collection_name", { _driver: database });
其中<mongo_url>
是mongodb url,例如mongodb://127.0.0.1:27017/meteor
(带有数据库名称)
目前这种方法有一个缺点:没有Oplog
目前这是不可能的.每个meteor应用程序都绑定到一个数据库.
有几种方法可以解决这个问题,但它的价值可能更复杂:
在其他meteor应用程序中(例如,在同一台机器上的端口6000上运行).您仍然可以进行响应,但需要通过方法调用代理插入、删除和更新
服务器:
Cats = Meteor.Collection('cats')
Meteor.publish("cats", function() {
return Cats.find();
});
Meteor.methods('updateCat, function(id, changes) {
Cats.update({_id: id}, {$set:changes});
});
你当前的Meteor应用程序:
var connection = DDP.connect("http://localhost:6000");
connection.subscribe("cats");
Cats = Meteor.Collection('cats', {connection: connection});
//To update a collection
Cats.call("updateCat", <cat_id>, <changes);
这使用了node js mongodb本机驱动程序.
这是连接到数据库,就像在任何其他Node.js 应用程序中一样.
有no个可用类型,不能使用new Meteor.Collection
个类型集合.
var mongodb = Npm.require("mongodb"); //or var mongodb = Meteor.require("mongodb") //if you use npm package on atmosphere
var db = mongodb.Db;
var mongoclient = mongodb.MongoClient;
var Server = mongodb.Server;
var db_connection = new Db('cats', new Server("127.0.0.1", 27017, {auto_reconnect: false, poolSize: 4}), {w:0, native_parser: false});
db.open(function(err, db) {
//Connected to db 'cats'
db.authenticate('<db username>', '<db password>', function(err, result) {
//Can do queries here
db.close();
});
});