MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Verwenden mehrerer Mongodb-Datenbanken mit Meteor.js

Aktualisieren

Es ist jetzt möglich, sich mit entfernten/mehreren Datenbanken zu verbinden:

var database = new MongoInternals.RemoteCollectionDriver("<mongo url>");
MyCollection = new Mongo.Collection("collection_name", { _driver: database });

Wobei <mongo_url> ist eine Mongodb-URL wie mongodb://127.0.0.1:27017/meteor (mit dem Datenbanknamen)

Dies hat im Moment einen Nachteil:Kein Oplog

Alte Antwort

Im Moment ist dies nicht möglich. Jede Meteor-App ist an eine Datenbank gebunden.

Es gibt einige Möglichkeiten, wie Sie dies umgehen können, aber es kann komplizierter sein, als es sich lohnt:

Eine Option - Verwenden Sie eine separate Meteor-App

In Ihrer anderen Meteor-App (Beispiel läuft auf Port 6000 auf demselben Computer). Sie können immer noch reaktiv sein, aber Sie müssen Einfügungen, Entfernungen und Aktualisierungen durch einen Methodenaufruf leiten

Server:

Cats = Meteor.Collection('cats')

Meteor.publish("cats", function() {
    return Cats.find();
});

Meteor.methods('updateCat, function(id, changes) {
    Cats.update({_id: id}, {$set:changes});
});

Ihre aktuelle Meteor-App:

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);

Eine weitere Option - benutzerdefinierte Mongodb-Verbindung

Dies verwendet den nativen Mongodb-Treiber von node js.

Dies stellt eine Verbindung zur Datenbank her, wie Sie es in jeder anderen Node-JS-App tun würden.

Es gibt nein Reaktivität verfügbar und Sie können die new Meteor.Collection nicht verwenden Typ Sammlungen.

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();
   });
});