Danke für den Kommentar. Ich weiß, dass die Lösung von @ Dror viel offizieller ist als ein Hack, aber ich habe bereits zuvor eine Antwort vergeben. Ich bin mir nicht ganz sicher, ob es ein gutes und zulässiges Verhalten ist, "Antwort" dann zu ändern / zu aktualisieren?
Ich stecke fest. Können Sie erklären, wie Sie Ihre_db durch "Meteor" ersetzen können
Surjith SM
3
Beachten Sie, dass dies bei der Bereitstellung auf Meteor NICHT für Produkte
funktioniert
2
@SurjithSM speichert export MONGO_URL=mongodb://localhost:27017/my_database_nameDaten 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.
Benjamin Crouzier
1
Kann es mit einer Konfigurationsdatei gemacht werden? Versucht mit settings.json und es wird nicht funktionieren
Kostanos
1
Dies stürzte zum Teufel aus meiner lokalen App.
Deborah
14
Wir verwenden npm:
Erstellen Sie eine package.jsonDatei 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 <...>):
'MONGO_URL' wird nicht als interner oder externer Befehl erkannt
Abdul Hameed
1
Es ist eine Umgebungsvariable, stellen Sie sicher, dass keine Leerzeichen um das = Zeichen
Malix
9
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:
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 mongoexportdiese Option, um Ihre Sammlungen einzeln zu sichern und anschließend mongoimportdie Dateien in die meteorin 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.
Bedeutet das, dass wir Meteor Mongodb-Hosting liefern sollten, anstatt auf andere Weise zu hosten?
Drake Guan
2
@Drake: Es sei denn, Sie können Meteor so anpassen, dass es mit Ihrer Datenbank funktioniert. app/lib/mongo_runner.jsentscheidet, 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 ...
Tamara Wijsman
@Drake: Wenn Sie möchten, dass ich meinen Kommentar als Antwort platziere (wenn es für Sie funktioniert hat), lassen Sie es mich bitte wissen.
Tamara Wijsman
@ TomWijsman: Ich habe versucht, 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 ~
Drake Guan
Es ist viel einfacher, Mongochef zum Kopieren und Einfügen von Daten zu verwenden, als die Export- / Importbefehle. 3t.io/mongochef
Max Hodges
0
Ich habe lediglich die IP-Adresse meines Digital Ocean Droplet-Servers anstelle von localhost hinzugefügt, und es hat funktioniert:
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.
Es ist eigentlich eine schlechte Praxis, die öffentliche IP Ihrer VM für die MongoDB zu verwenden. Ich werde meine Antwort aktualisieren, um localhost zu verwenden.
Milean
-6
Sie müssen Ihre App in einem Terminalfenster laufen lassen, dann ein anderes öffnen und "meteor mongo" eingeben, und es sollte funktionieren!
Antworten:
Verwenden Sie die Umgebungsvariable MONGO_URL. Etwas wie:
Ersetzen Sie
your_db
durchmeteor
oder eine andere Datenbank, die Sie verwenden möchten.quelle
export MONGO_URL=mongodb://localhost:27017/my_database_name
Daten in einer Datenbank mit dem Namenmy_database_name
. Er meinte, wenn du willst, kannst du es tunexport 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 mitnpm init
, falls Sie noch keine haben.Geben Sie die folgende Zeile in diese Datei ein und ändern Sie sie (wobei alle ersetzt werden
<...>
):npm run meteor
quelle
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.
quelle
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:
Dadurch werden Sie mit dem Mongo-Server der Meteor-App verbunden. Verwenden Sie nun db.copyDatabase wie folgt:
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".
quelle
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ßendmongoimport
die Dateien in diemeteor
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.
quelle
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 erfolgenpackages/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 ihnconsole.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:
BEARBEITEN: Verwenden Sie MUP, um Ihre Meteorprojekte bereitzustellen: https://github.com/zodern/meteor-up
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.
quelle
Sie müssen Ihre App in einem Terminalfenster laufen lassen, dann ein anderes öffnen und "meteor mongo" eingeben, und es sollte funktionieren!
quelle