MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Utilisation de plusieurs bases de données Mongodb avec Meteor.js

Mettre à jour

Il est désormais possible de se connecter à des bases de données distantes/multiples :

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

<mongo_url> est une URL mongodb telle que mongodb://127.0.0.1:27017/meteor (avec le nom de la base de données)

Il y a un inconvénient à cela pour le moment :Pas d'Oplog

Ancienne réponse

Pour le moment ce n'est pas possible. Chaque application météore est liée à une base de données.

Il existe plusieurs façons de contourner ce problème, mais cela peut être plus compliqué que cela en vaut la peine :

Une option - Utiliser une application Meteor distincte

Dans votre autre application météore (exemple exécuté sur le port 6000 sur la même machine). Vous pouvez toujours avoir de la réactivité, mais vous devez proxy insérer, supprimer et mettre à jour via un appel de méthode

Serveur :

Cats = Meteor.Collection('cats')

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

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

Votre application Meteor actuelle :

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

Une autre option - connexion mongodb personnalisée

Cela utilise le pilote natif node js mongodb.

Cela se connecte à la base de données comme si vous le feriez dans n'importe quelle autre application node js.

Il n'y a non réactivité disponible et vous ne pouvez pas utiliser la new Meteor.Collection collections de types.

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