Hoe kun je verbinding maken met een MongoDB met Meteor?
Scenario A:gebruik de ingebouwde database als standaard
Dit is veel eenvoudiger dan wat je deed. Wanneer je meteor
run laat lopen je start eigenlijk een DB met de Meteor-server, waar Meteor luistert op poort 3000 en de database op poort 3001. De Meteor-app is al verbonden met deze database op poort 3001 en gebruikt een db met de naam meteor
. Het is niet nodig om terug te vallen op MongoInternals.RemoteCollectionDriver
. Verwijder die code en verander de dingen in:
Boxes = new Mongo.Collection("boxes"); // use default MongoDB connection
Scenario B:gebruik een andere database als standaard
De MONGO_URL
. gebruiken omgevingsvariabele kunt u de verbindingsreeks instellen op een MongoDB bij het starten van de Meteor-server. In plaats van de lokale poort 3001-database of een niet-geverifieerde verbinding kunt u precies aangeven waar en hoe u verbinding wilt maken. Start uw Meteor-server als volgt:
$ MONGO_URL=mongodb://user:[email protected]:27017/meteor meteor
U kunt ook de user:[email protected]
onderdeel van de opdracht als er geen authenticatie nodig is.
Scenario C:verbinding maken met een tweede (3e, enz.) DB van dezelfde Meteor-app
Nu moeten we MongoInternals.RemoteCollectionDriver
. gebruiken . Als u een andere database wilt gebruiken die niet de standaard DB is die is gedefinieerd bij het starten van de Meteor-server, moet u uw aanpak gebruiken.
var database = new MongoInternals.RemoteCollectionDriver('mongodb://user:[email protected]:27017/meteor');
var numberOfDocs = database.open('boxes').find().count();
Bonus:waarom zou u MongoInternals
niet gebruiken? met Mongo.Collection
?
Zoals de documenten aangeven
u mag geen enkele Mongo-verbinding doorgeven aan de new Mongo.Collection()
commando, maar alleen een verbinding met een andere Meteor-instantie. Dat betekent dat als u DDP.connect
. gebruikt om verbinding te maken met een andere server kunt u uw code gebruiken - maar u moet de MongoInternals
niet mixen met Mongo.Collection
- ze werken niet goed samen.