Powiedzmy, że przez jakiś czas działa serwer MongoDB dla klienta GUI (przez wxPython ).
Jak mogę podłączyć mój nowy projekt Meteor do mojej już istniejącej bazy danych MongoDB ?
Powiedzmy, że przez jakiś czas działa serwer MongoDB dla klienta GUI (przez wxPython ).
Jak mogę podłączyć mój nowy projekt Meteor do mojej już istniejącej bazy danych MongoDB ?
Odpowiedzi:
Użyj zmiennej środowiskowej MONGO_URL. Coś jak:
export MONGO_URL=mongodb://localhost:27017/your_db
Wymień your_db
się meteor
lub cokolwiek db chcesz użyć.
export MONGO_URL=mongodb://localhost:27017/my_database_name
umieś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.
Używamy npm
:
Utwórz package.json
plik z npm init
, jeśli jeszcze go nie masz.
Wprowadź i zmodyfikuj następujący wiersz w tym pliku (zastępując wszystkie <...>
):
"scripts": {"meteor": "MONGO_URL=mongodb://<USER>:<PASSWORD>@<SERVER>:<PORT>/<DB> meteor"}
npm run meteor
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.
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:
mongo --port 3002
Spowoduje to połączenie z serwerem Mongo aplikacji Meteor. Teraz użyj db.copyDatabase w następujący sposób:
db.copyDatabase('myappDatabase', 'meteor', 'localhost');
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, mongoexport
aby zrzucić swoje kolekcje indywidualnie, a następnie mongoimport
zaimportować pliki do bazy danych o nazwie meteor
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.
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ść, 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ł ...
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:
env: {
ROOT_URL: 'http://yourdomain.com',
MONGO_URL: 'mongodb://104.236.24.66:27017/meteor',
PORT: 3002,
},
EDYTUJ: użyj MUP do wdrażania projektów meteorowych: https://github.com/zodern/meteor-up
env: {
ROOT_URL: 'https://www.example.com',
MONGO_URL: 'mongodb://localhost/meteor',
},
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.
Musisz uruchomić aplikację w jednym oknie terminala, a następnie otworzyć inne i wpisać „meteor mongo” i powinno działać!