MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Meteor-Datenbankverbindung

Wie können Sie sich mit Meteor mit einer MongoDB verbinden?

Szenario A:Verwenden Sie die integrierte DB als Standard

Das ist viel einfacher als das, was Sie getan haben. Wenn Sie meteor ausführen Sie starten tatsächlich eine Datenbank mit dem Meteor-Server, wobei Meteor auf Port 3000 und die Datenbank auf Port 3001 lauscht. Die Meteor-App ist bereits mit dieser Datenbank auf Port 3001 verbunden und verwendet eine Datenbank namens meteor . Es besteht keinerlei Notwendigkeit, auf MongoInternals.RemoteCollectionDriver zurückzugreifen . Entfernen Sie einfach diesen Code und ändern Sie die Dinge zu:

 Boxes = new Mongo.Collection("boxes"); // use default MongoDB connection

Szenario B:Verwenden Sie eine andere DB als Standard

Verwenden Sie die MONGO_URL Umgebungsvariable können Sie die Verbindungszeichenfolge auf eine MongoDB setzen, wenn Sie den Meteor-Server starten. Anstelle der lokalen Port 3001-Datenbank oder einer nicht authentifizierten Verbindung können Sie genau angeben, wo und wie eine Verbindung hergestellt werden soll. Starten Sie Ihren Meteor-Server wie folgt:

$ MONGO_URL=mongodb://user:[email protected]:27017/meteor meteor

Sie können auch den user:[email protected] Teil des Befehls, wenn keine Authentifizierung erforderlich ist.

Szenario C:Verbinden Sie sich mit einer zweiten (dritten usw.) Datenbank von derselben Meteor-App

Jetzt müssen wir MongoInternals.RemoteCollectionDriver verwenden . Wenn Sie eine andere Datenbank verwenden möchten, die nicht die Standard-DB ist, die beim Starten des Meteor-Servers definiert wurde, sollten Sie Ihren Ansatz verwenden.

var database = new MongoInternals.RemoteCollectionDriver('mongodb://user:[email protected]:27017/meteor');
var numberOfDocs = database.open('boxes').find().count();

Bonus:Warum sollten Sie MongoInternals nicht verwenden? mit Mongo.Collection ?

Wie die Dokumentation anzeigt Sie sollten keine Mongo-Verbindung an die new Mongo.Collection() übergeben Befehl, sondern nur eine Verbindung zu einer anderen Meteor-Instanz. Das heißt, wenn Sie DDP.connect verwenden Um sich mit einem anderen Server zu verbinden, können Sie Ihren Code verwenden - aber Sie sollten die MongoInternals nicht mischen mit Mongo.Collection - Sie arbeiten nicht gut zusammen.