MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Utilizzo di più database Mongodb con Meteor.js

Aggiorna

È ora possibile connettersi a database remoti/multipli:

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

Dove <mongo_url> è un URL mongodb come mongodb://127.0.0.1:27017/meteor (con il nome del database)

C'è uno svantaggio con questo al momento:No Oplog

Vecchia risposta

Al momento questo non è possibile. Ogni app meteor è associata a un database.

Ci sono alcuni modi per aggirare questo problema, ma potrebbe essere più complicato del suo valore:

Un'opzione:usa un'app Meteor separata

Nell'altra app meteor (esempio in esecuzione sulla porta 6000 sulla stessa macchina). Puoi ancora avere reattività, ma devi proxy inserimenti, rimozioni e aggiornamenti tramite una chiamata al metodo

Server:

Cats = Meteor.Collection('cats')

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

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

La tua attuale app 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);

Un'altra opzione:connessione mongodb personalizzata

Questo utilizza il driver nativo del nodo js mongodb.

Questo si connette al database come se faresti in qualsiasi altra app js di nodo.

Non c'è non reattività disponibile e non puoi utilizzare il new Meteor.Collection tipo raccolte.

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