MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Usando vários bancos de dados Mongodb com Meteor.js

Atualizar


Agora é possível conectar-se a bancos de dados remotos/múltiplos:
var database = new MongoInternals.RemoteCollectionDriver("<mongo url>");
MyCollection = new Mongo.Collection("collection_name", { _driver: database });

Onde <mongo_url> é um URL mongodb como mongodb://127.0.0.1:27017/meteor (com o nome do banco de dados)

Há uma desvantagem com isso no momento:Sem Oplog

Resposta antiga


No momento isso não é possível. Cada aplicativo de meteoro está vinculado a um banco de dados.

Existem algumas maneiras de contornar isso, mas pode ser mais complicado do que vale a pena:

Uma opção - Use um aplicativo Meteor separado


Em seu outro aplicativo meteoro (exemplo rodando na porta 6000 na mesma máquina). Você ainda pode ter reatividade, mas precisa inserir, remover e atualizar o proxy por meio de uma chamada de método

Servidor:
Cats = Meteor.Collection('cats')

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

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

Seu aplicativo Meteor atual:
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);

Outra opção - conexão mongodb personalizada


Isso usa o driver nativo do node js mongodb.

Isso está se conectando ao banco de dados como se você faria em qualquer outro aplicativo js do nó.

Não há não reatividade disponível e você não pode usar o new Meteor.Collection tipo coleções.
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();
   });
});