sql >> Base de Datos >  >> NoSQL >> MongoDB

Uso de múltiples bases de datos Mongodb con Meteor.js

Actualizar

Ahora es posible conectarse a bases de datos remotas/múltiples:

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

Donde <mongo_url> es una URL mongodb como mongodb://127.0.0.1:27017/meteor (con el nombre de la base de datos)

Hay una desventaja con esto en este momento:No Oplog

Respuesta antigua

Por el momento esto no es posible. Cada aplicación de meteoritos está vinculada a una base de datos.

Hay algunas maneras de evitar esto, pero puede ser más complicado de lo que vale:

Una opción:usar una aplicación Meteor aparte

En su otra aplicación de meteoritos (ejemplo ejecutándose en el puerto 6000 en la misma máquina). Todavía puede tener reactividad, pero necesita inserciones, eliminaciones y actualizaciones de proxy a través de una llamada 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});
});

Tu aplicación Meteor actual:

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

Otra opción:conexión mongodb personalizada

Esto utiliza el controlador nativo de node js mongodb.

Esto es conectarse a la base de datos como lo haría en cualquier otra aplicación de node js.

No hay ninguna reactividad disponible y no puedes usar la new Meteor.Collection tipos de colecciones.

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