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.