sql >> Databasteknik >  >> NoSQL >> MongoDB

Använda flera Mongodb-databaser med Meteor.js

Uppdatera

Det är nu möjligt att ansluta till fjärr-/flera databaser:

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

Där <mongo_url> är en mongodb-url som mongodb://127.0.0.1:27017/meteor (med databasens namn)

Det finns en nackdel med detta för tillfället:Ingen Oplog

Gammalt svar

För närvarande är detta inte möjligt. Varje meteorapp är bunden till en databas.

Det finns några sätt du kan komma runt detta på, men det kan vara mer komplicerat än det är värt:

Ett alternativ - Använd en separat Meteor-app

I din andra meteor-app (exempel körs vid port 6000 på samma maskin). Du kan fortfarande ha reaktivitet men du måste infoga, ta bort och uppdatera proxy genom ett metodanrop

Server:

Cats = Meteor.Collection('cats')

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

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

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

Ett annat alternativ - anpassad mongodb-anslutning

Detta använder noden js mongodb inbyggda drivrutinen.

Detta ansluter till databasen som om du skulle göra i vilken annan node js-app som helst.

Det finns ingen reaktivitet tillgänglig och du kan inte använda den new Meteor.Collection typsamlingar.

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


  1. Använder selleri för realtid, synkron extern API-fråga med Gevent

  2. Installera och köra MongoDB på OSX

  3. Varför går inte Redis-nycklarna ut?

  4. Optimera samtidiga ImageMagick-förfrågningar med redis/php-resque