Hvordan kan du oprette forbindelse til en MongoDB med Meteor?
Scenario A:Brug den indbyggede DB som standard
Dette er meget enklere, end du gjorde. Når du kører meteor
du starter faktisk en DB med Meteor-serveren, hvor Meteor lytter på port 3000 og databasen på port 3001. Meteor-appen er allerede forbundet til denne database på port 3001 og bruger en db ved navn meteor
. Der er ingen grund til at falde tilbage til MongoInternals.RemoteCollectionDriver
. Du skal bare fjerne den kode og ændre tingene til:
Boxes = new Mongo.Collection("boxes"); // use default MongoDB connection
Scenario B:Brug en anden DB som standard
Brug af MONGO_URL
miljøvariabel du kan indstille forbindelsesstrengen til en MongoDB, når du starter Meteor-serveren. I stedet for den lokale port 3001-database eller en ikke-godkendt forbindelse kan du specificere præcis, hvor og hvordan der skal oprettes forbindelse. Start din Meteor-server sådan her:
$ MONGO_URL=mongodb://user:[email protected]:27017/meteor meteor
Du kan også udelade user:[email protected]
del af kommandoen, hvis der ikke er behov for godkendelse.
Scenario C:Opret forbindelse til en anden (3. osv.) DB fra den samme Meteor-app
Nu skal vi bruge MongoInternals.RemoteCollectionDriver
. Hvis du ønsker at bruge en anden database, der ikke er standard-DB defineret ved start af Meteor-serveren, bør du bruge din tilgang.
var database = new MongoInternals.RemoteCollectionDriver('mongodb://user:[email protected]:27017/meteor');
var numberOfDocs = database.open('boxes').find().count();
Bonus:Hvorfor bør du ikke bruge MongoInternals
med Mongo.Collection
?
Som dokumenterne angiver
du bør ikke videregive nogen Mongo-forbindelse til den new Mongo.Collection()
kommando, men kun en forbindelse til en anden Meteor-instans. Det betyder, at hvis du bruger DDP.connect
for at oprette forbindelse til en anden server kan du bruge din kode - men du bør ikke blande MongoInternals
med Mongo.Collection
- de fungerer ikke godt sammen.