Wie verwende ich eine vorhandene MongoDB in einem Meteor-Projekt?

Angenommen, es gibt einen laufenden MongoDB-Server für einen GUI-Client (von wxPython ) für eine Weile.

Wie kann ich mein neues Meteor-Projekt mit meiner bereits bestehenden MongoDB verbinden ?

Solutions Collecting From Web of "Wie verwende ich eine vorhandene MongoDB in einem Meteor-Projekt?"

Verwenden Sie die Umgebungsvariable MONGO_URL. Etwas wie:

export MONGO_URL=mongodb://localhost:27017/your_db 

Ersetzen Sie your_db durch meteor oder die von Ihnen gewünschte db.

Wir benutzen npm :

  • Erstellen Sie eine package.json Datei mit npm init , falls Sie noch keine haben.

  • Geben Sie die folgende Zeile in dieser Datei ein und ändern Sie sie (ersetzen Sie alle < ...> ):

 "scripts": {"meteor": "MONGO_URL=mongodb://:@:/ meteor"} 
  • Sie können dann Meteor mit nur npm run meteor starten

In den Kommentaren zu Dannys Antwort empfiehlt Tom Wijsman das Patchen von Paketen / mongo-livedata / mongo_driver.js, Zeile 21. Ein besserer Platz ist in app / meteor / run.js, Zeile 460. Auf diese Weise wird die Umgebungsvariable immer noch abgeholt, wenn sie vorhanden ist wie zum Beispiel wenn Meteor auf Heroku läuft. Ändern Sie einfach den voreingestellten hardcoded mongodb: //127.0.0.1 in den Speicherort Ihres MongoDB-Servers.

Sie können hierzu db.copyDatabase verwenden, mit einem Vorbehalt, dass ein Fehler vorliegt und Sie die Daten in Meteor nicht aktualisieren können. Siehe https://github.com/meteor/meteor/issues/61

Wenn Sie die Entwicklungsversion von Meteor verwenden, können Sie Daten von einem laufenden MongoDB-Server übertragen, indem Sie Ihre Meteor-App starten und dann Folgendes tun:

 mongo --port 3002 

Dadurch werden Sie mit dem Mongo-Server der Meteor-App verbunden. Verwenden Sie nun db.copyDatabase wie folgt:

 db.copyDatabase('myappDatabase', 'meteor', 'localhost'); 

Dadurch wird die database myappDatabase von einem MongoDB-Server, der auf dem Standard-Port von localhost ausgeführt wird, auf den Mongo-Server von Meteor app kopiert. Der databasename der Meteor App ist ‘Meteor’.

Kopieren Sie einfach die Daten in die Meteor MongoDB database – kein Grund, Meteor an die bestehende database anzuhängen und das Risiko einzugehen, Dinge zu überschreiben.

Verwenden Sie mongoexport , um Ihre Sammlungen einzeln mongoimport , und importieren Sie die Dateien anschließend in die database meteor in der Meteor MongoDB-Instanz. Die Meteor MongoDB-Instanz wird auf Port 3002 mit bind_address 127.0.0.1 ausgeführt, und die Datendateien befinden sich im Meteor-Projektunterverzeichnis .meteor/local/db .

Wenn Sie mit dem Import / Export in MongoDB nicht vertraut sind, lesen Sie die Dokumentation .

Alles, was ich getan habe, war, die IP meines Digital Ocean Tröpfchenservers anstelle von localhost hinzuzufügen, und es funktionierte:

 env: { ROOT_URL: 'http://yourdomain.com', MONGO_URL: 'mongodb://104.236.24.66:27017/meteor', PORT: 3002, }, 

EDIT: Verwenden Sie MUP, um Ihre Meteor-Projekte zu implementieren: https://github.com/zodern/meteor-up

 env: { ROOT_URL: 'https://www.example.com', MONGO_URL: 'mongodb://localhost/meteor', }, 

Mup verwendet Docker und “verlinkt” Ihre 2 Container und hostet somit sowohl die App als auch Mongo auf derselben VM (Server). Auf Ihre mongoDB sollte aus Sicherheitsgründen nicht von der öffentlichen IP aus zugegriffen werden können.

Du musst deine App in einem Terminal-Fenster laufen lassen, dann eine andere öffnen und “meteor mongo” eingeben und es sollte funktionieren!