Dzięki za komentarz. Wiem, że rozwiązanie @ Dror jest bardziej oficjalne niż hack, ale już wcześniej przypisałem odpowiedź. W takim razie nie jestem do końca pewien, czy zmiana / aktualizacja „odpowiedzi” jest dobrym i dopuszczalnym zachowaniem?
@SurjithSM export MONGO_URL=mongodb://localhost:27017/my_database_nameumieści dane w bazie danych o nazwie my_database_name. Miał na myśli, że jeśli chcesz, możesz to zrobić export MONGO_URL=mongodb://localhost:27017/meteor. Pomyślałem, że radziłbym nazwać bazę danych taką samą, jak nazwa projektu.
Benjamin Crouzier,
1
Czy można to zrobić za pomocą jakiegoś pliku konfiguracyjnego? Próbowałem z settings.json i to nie zadziała
Kostanos
1
to rozwaliło moją lokalną aplikację.
Deborah
14
Używamy npm:
Utwórz package.jsonplik z npm init, jeśli jeszcze go nie masz.
Wprowadź i zmodyfikuj następujący wiersz w tym pliku (zastępując wszystkie <...>):
„MONGO_URL” nie jest rozpoznawany jako polecenie wewnętrzne lub zewnętrzne
Abdul Hameed
1
jest to zmienna środowiskowa, upewnij się, że nie ma spacji wokół znaku =
malix
9
W komentarzach do odpowiedzi Danny'ego Tom Wijsman zaleca łatanie pakietów / mongo-Liveata / mongo_driver.js, wiersz 21. Lepszym miejscem jest app / meteor / run.js, wiersz 460. W ten sposób zmienna środowiskowa jest nadal pobierana, jeśli jest obecna , na przykład podczas uruchamiania Meteor na Heroku. Po prostu zmień domyślną zakodowaną na stałe mongodb: //127.0.0.1 na lokalizację twojego serwera MongoDB.
Spowoduje to skopiowanie bazy danych myappDatabase z serwera MongoDB działającego na standardowym porcie na hoście lokalnym na serwer aplikacji Meteor Mongo. Nazwa bazy danych używana przez aplikację Meteor to „meteor”.
Wystarczy skopiować dane do bazy danych Meteor MongoDB - nie ma powodu, aby próbować podłączyć Meteor do istniejącej bazy danych i ryzykować nadpisaniem rzeczy.
Użyj, mongoexportaby zrzucić swoje kolekcje indywidualnie, a następnie mongoimportzaimportować pliki do bazy danych o nazwie meteorw instancji Meteor MongoDB. Instancja Meteor MongoDB działa na porcie 3002 z adresem bind_address 127.0.0.1, a pliki danych znajdują się w podkatalogu projektu Meteor .meteor/local/db.
Zobacz dokumentację, jeśli nie znasz importu / eksportu w MongoDB.
Czy to oznacza, że powinniśmy udostępniać hosting mongodb firmie meteor zamiast w inny sposób?
Drake Guan
2
@Drake: Chyba że możesz dostosować Meteor do pracy z twoją bazą danych. app/lib/mongo_runner.jsdecyduje, jak go uruchomić (możesz nawet nie wymagać uruchamiania kodu, dlatego sprawdź, jak go wyłączyć). Wydaje się packages/mongo-livedata/mongo_driver.js, że połączenie ma miejsce w środku , myślę, że możesz po prostu zmienić parametr url w linii 21. Jeśli chcesz poznać jego wartość, wstaw console.log(url);w linii wcześniej, zrestartuj Meteor i uważnie obserwuj wyjście Meteor. Upewnij się, że rzeczywiście raz zadzwoniłeś do Meteor w aplikacji, aby się uruchomił ...
Tamara Wijsman
@Drake: Jeśli chcesz, żebym zamieścił mój komentarz jako odpowiedź (jeśli zadziałał dla Ciebie), daj mi znać.
Tamara Wijsman
@TomWijsman: Próbowałem console.log(url);i otrzymałem informacje! Zasugeruję, abyś zrobił to jako kompletną odpowiedź, ponieważ uważam, że zapewnia pomoc społeczności, a przynajmniej ludziom takim jak ja, którzy nie są jeszcze zaznajomieni z meteor ~
Drake Guan
o wiele łatwiejsze w użyciu mongochef do kopiowania i wklejania danych, zamiast poleceń eksportu / importu. 3t.io/mongochef
Max Hodges
0
Wszystko, co zrobiłem, to dodanie adresu IP mojego serwera dropletów Digital ocean zamiast hosta lokalnego i zadziałało:
Mup używa Dockera i „połączy” Twoje 2 kontenery, hostując w ten sposób zarówno aplikację, jak i mongo na tej samej maszynie wirtualnej (serwerze). Twoja baza danych mongoDB nie powinna być dostępna z publicznego adresu IP ze względów bezpieczeństwa.
używanie publicznego adresu IP maszyny wirtualnej dla bazy danych mongoDB jest w rzeczywistości złą praktyką, zamierzam zaktualizować moją odpowiedź, aby używać localhost.
Milean
0
Spędziłem dużo czasu i odkryłem, że wymaga to cudzysłowów wokół adresu URL:
Odpowiedzi:
Użyj zmiennej środowiskowej MONGO_URL. Coś jak:
Wymień
your_db
sięmeteor
lub cokolwiek db chcesz użyć.źródło
export MONGO_URL=mongodb://localhost:27017/my_database_name
umieści dane w bazie danych o nazwiemy_database_name
. Miał na myśli, że jeśli chcesz, możesz to zrobićexport MONGO_URL=mongodb://localhost:27017/meteor
. Pomyślałem, że radziłbym nazwać bazę danych taką samą, jak nazwa projektu.Używamy
npm
:Utwórz
package.json
plik znpm init
, jeśli jeszcze go nie masz.Wprowadź i zmodyfikuj następujący wiersz w tym pliku (zastępując wszystkie
<...>
):npm run meteor
źródło
W komentarzach do odpowiedzi Danny'ego Tom Wijsman zaleca łatanie pakietów / mongo-Liveata / mongo_driver.js, wiersz 21. Lepszym miejscem jest app / meteor / run.js, wiersz 460. W ten sposób zmienna środowiskowa jest nadal pobierana, jeśli jest obecna , na przykład podczas uruchamiania Meteor na Heroku. Po prostu zmień domyślną zakodowaną na stałe mongodb: //127.0.0.1 na lokalizację twojego serwera MongoDB.
źródło
Możesz użyć do tego db.copyDatabase, z zastrzeżeniem, że jest błąd i nie możesz zaktualizować danych w Meteor. Zobacz https://github.com/meteor/meteor/issues/61
Jeśli używasz rozwojowej wersji Meteor, możesz przesyłać dane z działającego serwera MongoDB, uruchamiając aplikację Meteor, a następnie wykonując:
Spowoduje to połączenie z serwerem Mongo aplikacji Meteor. Teraz użyj db.copyDatabase w następujący sposób:
Spowoduje to skopiowanie bazy danych myappDatabase z serwera MongoDB działającego na standardowym porcie na hoście lokalnym na serwer aplikacji Meteor Mongo. Nazwa bazy danych używana przez aplikację Meteor to „meteor”.
źródło
Wystarczy skopiować dane do bazy danych Meteor MongoDB - nie ma powodu, aby próbować podłączyć Meteor do istniejącej bazy danych i ryzykować nadpisaniem rzeczy.
Użyj,
mongoexport
aby zrzucić swoje kolekcje indywidualnie, a następniemongoimport
zaimportować pliki do bazy danych o nazwiemeteor
w instancji Meteor MongoDB. Instancja Meteor MongoDB działa na porcie 3002 z adresem bind_address 127.0.0.1, a pliki danych znajdują się w podkatalogu projektu Meteor.meteor/local/db
.Zobacz dokumentację, jeśli nie znasz importu / eksportu w MongoDB.
źródło
app/lib/mongo_runner.js
decyduje, jak go uruchomić (możesz nawet nie wymagać uruchamiania kodu, dlatego sprawdź, jak go wyłączyć). Wydaje siępackages/mongo-livedata/mongo_driver.js
, że połączenie ma miejsce w środku , myślę, że możesz po prostu zmienić parametr url w linii 21. Jeśli chcesz poznać jego wartość, wstawconsole.log(url);
w linii wcześniej, zrestartuj Meteor i uważnie obserwuj wyjście Meteor. Upewnij się, że rzeczywiście raz zadzwoniłeś do Meteor w aplikacji, aby się uruchomił ...console.log(url);
i otrzymałem informacje! Zasugeruję, abyś zrobił to jako kompletną odpowiedź, ponieważ uważam, że zapewnia pomoc społeczności, a przynajmniej ludziom takim jak ja, którzy nie są jeszcze zaznajomieni z meteor ~Wszystko, co zrobiłem, to dodanie adresu IP mojego serwera dropletów Digital ocean zamiast hosta lokalnego i zadziałało:
EDYTUJ: użyj MUP do wdrażania projektów meteorowych: https://github.com/zodern/meteor-up
Mup używa Dockera i „połączy” Twoje 2 kontenery, hostując w ten sposób zarówno aplikację, jak i mongo na tej samej maszynie wirtualnej (serwerze). Twoja baza danych mongoDB nie powinna być dostępna z publicznego adresu IP ze względów bezpieczeństwa.
źródło
Spędziłem dużo czasu i odkryłem, że wymaga to cudzysłowów wokół adresu URL:
źródło
Musisz uruchomić aplikację w jednym oknie terminala, a następnie otworzyć inne i wpisać „meteor mongo” i powinno działać!
źródło