Jak możesz połączyć się z MongoDB za pomocą Meteora?
Scenariusz A:Użyj wbudowanej bazy danych jako domyślnej
To znacznie prostsze niż to, co zrobiłeś. Po uruchomieniu meteor
faktycznie uruchamiasz bazę danych z serwerem Meteor, gdzie Meteor nasłuchuje na porcie 3000, a baza danych na porcie 3001. Aplikacja Meteor jest już połączona z tą bazą danych na porcie 3001 i używa bazy danych o nazwie meteor
. Nie ma potrzeby wracać do MongoInternals.RemoteCollectionDriver
. Po prostu usuń ten kod i zmień rzeczy na:
Boxes = new Mongo.Collection("boxes"); // use default MongoDB connection
Scenariusz B:użyj innej bazy danych jako domyślnej
Korzystanie z MONGO_URL
zmienna środowiskowa możesz ustawić ciąg połączenia na MongoDB podczas uruchamiania serwera Meteor. Zamiast lokalnej bazy danych portu 3001 lub nieuwierzytelnionego połączenia możesz dokładnie określić, gdzie i jak się połączyć. Uruchom swój serwer Meteor w ten sposób:
$ MONGO_URL=mongodb://user:[email protected]:27017/meteor meteor
Możesz też pominąć user:[email protected]
część polecenia, jeśli uwierzytelnianie nie jest potrzebne.
Scenariusz C:Połącz się z drugą (3. itd.) bazą danych z tej samej aplikacji Meteor
Teraz musimy użyć MongoInternals.RemoteCollectionDriver
. Jeśli chcesz użyć innej bazy danych, która nie jest domyślną bazą danych zdefiniowaną podczas uruchamiania serwera Meteor, powinieneś zastosować swoje podejście.
var database = new MongoInternals.RemoteCollectionDriver('mongodb://user:[email protected]:27017/meteor');
var numberOfDocs = database.open('boxes').find().count();
Bonus:dlaczego nie powinieneś używać MongoInternals
z Mongo.Collection
?
Jak wskazuje dokumentacja
nie powinieneś przekazywać żadnego połączenia Mongo do new Mongo.Collection()
polecenie, ale tylko połączenie z inną instancją Meteor. Oznacza to, że jeśli używasz DDP.connect
aby połączyć się z innym serwerem, możesz użyć swojego kodu - ale nie powinieneś mieszać MongoInternals
z Mongo.Collection
- nie współpracują dobrze ze sobą.