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 vorhandenen MongoDB verbinden ?
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 vorhandenen MongoDB verbinden ?
Antworten:
Verwenden Sie die Umgebungsvariable MONGO_URL. Etwas wie:
export MONGO_URL=mongodb://localhost:27017/your_db
Ersetzen Sie your_db
durch meteor
oder eine andere Datenbank, die Sie verwenden möchten.
export MONGO_URL=mongodb://localhost:27017/my_database_name
Daten in einer Datenbank mit dem Namen my_database_name
. Er meinte, wenn du willst, kannst du es tun export MONGO_URL=mongodb://localhost:27017/meteor
. Ich dachte, ich würde empfehlen, Ihren Datenbanknamen genauso zu benennen wie Ihr Projekt.
Wir verwenden npm
:
Erstellen Sie eine package.json
Datei mit npm init
, falls Sie noch keine haben.
Geben Sie die folgende Zeile in diese Datei ein und ändern Sie sie (wobei alle ersetzt werden <...>
):
"scripts": {"meteor": "MONGO_URL=mongodb://<USER>:<PASSWORD>@<SERVER>:<PORT>/<DB> meteor"}
npm run meteor
In den Kommentaren zu Dannys Antwort empfiehlt Tom Wijsman, die Pakete / mongo-livingata / mongo_driver.js, Zeile 21, zu patchen. Ein besserer Ort ist in app / meteor / run.js, Zeile 460. Auf diese Weise wird die Umgebungsvariable weiterhin erfasst, falls vorhanden , zum Beispiel beim Ausführen von Meteor auf Heroku. Ändern Sie einfach die standardmäßige fest codierte Mongodb: //127.0.0.1 in den Speicherort Ihres MongoDB-Servers.
Sie können dazu db.copyDatabase verwenden, mit der Einschränkung, 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 Datenbank myappDatabase von einem MongoDB-Server, der auf dem Standardport auf localhost ausgeführt wird, auf den Mongo-Server der Meteor-App kopiert. Der von der Meteor-App verwendete Datenbankname lautet "Meteor".
Kopieren Sie einfach die Daten in die Meteor MongoDB-Datenbank - kein Grund, Meteor an die vorhandene Datenbank anzuschließen und zu riskieren, Dinge zu überschreiben.
Verwenden Sie mongoexport
diese Option, um Ihre Sammlungen einzeln zu sichern und anschließend mongoimport
die Dateien in die meteor
in der Meteor MongoDB-Instanz angegebene Datenbank zu importieren . Die Meteor MongoDB-Instanz wird auf Port 3002 mit der Bindungsadresse 127.0.0.1 ausgeführt, und die Datendateien befinden sich im Unterverzeichnis des Meteor-Projekts .meteor/local/db
.
Lesen Sie die Dokumentation, wenn Sie mit dem Import / Export in MongoDB nicht vertraut sind.
app/lib/mongo_runner.js
entscheidet, wie es gestartet werden soll (möglicherweise müssen Sie nicht einmal Code starten, prüfen Sie daher, wie Sie es deaktivieren können). Die Verbindung dazu scheint im Inneren zu erfolgen packages/mongo-livedata/mongo_driver.js
. Ich denke, Sie können einfach den URL-Parameter in Zeile 21 ändern. Wenn Sie seinen Wert wissen möchten, fügen Sie ihn console.log(url);
in die Zeile ein, starten Sie Meteor neu und beobachten Sie Ihre Meteor-Ausgabe genau. Stellen Sie sicher, dass Sie Meteor tatsächlich einmal in Ihrer App anrufen, damit es ausgelöst wird ...
console.log(url);
die Informationen zu bekommen! Ich schlage vor, dass Sie dies so vollständig wie eine Umgehungsantwort machen, da ich glaube, dass es der Community hilft, oder zumindest Leuten wie mir, die noch nicht mit Meteor vertraut sind ~
Ich habe lediglich die IP-Adresse meines Digital Ocean Droplet-Servers anstelle von localhost hinzugefügt, und es hat funktioniert:
env: {
ROOT_URL: 'http://yourdomain.com',
MONGO_URL: 'mongodb://104.236.24.66:27017/meteor',
PORT: 3002,
},
BEARBEITEN: Verwenden Sie MUP, um Ihre Meteorprojekte bereitzustellen: https://github.com/zodern/meteor-up
env: {
ROOT_URL: 'https://www.example.com',
MONGO_URL: 'mongodb://localhost/meteor',
},
Mup verwendet Docker und "verknüpft" Ihre 2 Container, wodurch sowohl die App als auch Mongo auf derselben VM (Server) gehostet werden. Ihre mongoDB sollte aus Sicherheitsgründen nicht über die öffentliche IP zugänglich sein.
Sie müssen Ihre App in einem Terminalfenster laufen lassen, dann ein anderes öffnen und "meteor mongo" eingeben, und es sollte funktionieren!