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:example@sqldat.com:27017/meteor meteor
U kunt ook de user:example@sqldat.com 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:example@sqldat.com: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.