Supponiamo che ci sia un server MongoDB in esecuzione per un client GUI (di wxPython ) per un po '.
Come posso collegare il mio nuovo progetto Meteor al mio MongoDB già esistente ?
Supponiamo che ci sia un server MongoDB in esecuzione per un client GUI (di wxPython ) per un po '.
Come posso collegare il mio nuovo progetto Meteor al mio MongoDB già esistente ?
Risposte:
Utilizza la variabile d'ambiente MONGO_URL. Qualcosa di simile a:
export MONGO_URL=mongodb://localhost:27017/your_db
Sostituisci your_db
con meteor
o qualsiasi altro db che desideri utilizzare.
export MONGO_URL=mongodb://localhost:27017/my_database_name
inserirà i dati in un database denominato my_database_name
. Voleva dire che se vuoi, puoi farlo export MONGO_URL=mongodb://localhost:27017/meteor
. Pensavo che consiglierei di nominare il nome del tuo database come il tuo progetto.
Usiamo npm
:
Crea un package.json
file con npm init
, se non ne hai già uno.
Immettere e modificare la seguente riga in quel file (sostituendo tutti <...>
i):
"scripts": {"meteor": "MONGO_URL=mongodb://<USER>:<PASSWORD>@<SERVER>:<PORT>/<DB> meteor"}
npm run meteor
Nei commenti alla risposta di danny, Tom Wijsman consiglia di patchare i pacchetti / mongo-livesata / mongo_driver.js, riga 21. Un posto migliore è in app / meteor / run.js, riga 460. In questo modo la variabile d'ambiente viene ancora rilevata se presente , come quando si esegue Meteor su Heroku. Basta cambiare il mongodb con codice fisso predefinito: //127.0.0.1 nella posizione del tuo server MongoDB.
Puoi usare db.copyDatabase per farlo, con l'avvertenza che c'è un bug e non puoi aggiornare i dati in Meteor. Vedi https://github.com/meteor/meteor/issues/61
Se stai utilizzando la versione di sviluppo di Meteor, puoi trasferire i dati da un server MongoDB in esecuzione avviando la tua app Meteor, quindi facendo:
mongo --port 3002
Questo ti collegherà al server Mongo dell'app Meteor. Ora usa db.copyDatabase in questo modo:
db.copyDatabase('myappDatabase', 'meteor', 'localhost');
Questo copierà il database myappDatabase da un server MongoDB in esecuzione sulla porta standard su localhost, al server Mongo dell'app Meteor. Il nome del database utilizzato dall'app Meteor è "meteor".
Basta copiare i dati nel database Meteor MongoDB - non c'è motivo di provare ad agganciare Meteor al database esistente e rischiare di sovrascrivere le cose.
Utilizzare per mongoexport
eseguire il dump delle raccolte individualmente, quindi mongoimport
per importare i file nel database denominato meteor
nell'istanza di Meteor MongoDB. L'istanza Meteor MongoDB viene eseguita sulla porta 3002 con bind_address 127.0.0.1 e i file di dati si trovano nella sottodirectory del progetto Meteor .meteor/local/db
.
Consulta la documentazione se non hai familiarità con l'importazione / esportazione in MongoDB.
app/lib/mongo_runner.js
decide come avviarlo (potresti anche non richiedere il lancio del codice, quindi guarda come disabilitarlo). La connessione ad esso sembra avvenire all'interno packages/mongo-livedata/mongo_driver.js
, penso che tu possa semplicemente cambiare il parametro url sulla riga 21. Se vuoi conoscere il suo valore, inseriscilo console.log(url);
nella riga precedente, riavvia Meteor e guarda attentamente l'output di Meteor. Assicurati di chiamare effettivamente Meteor una volta nella tua app affinché si
console.log(url);
e ho ottenuto le informazioni! Ti suggerisco di renderlo completo come una soluzione alternativa perché credo che fornisca aiuto alla comunità, o almeno, a persone come me che non hanno ancora familiarità con meteor ~
Tutto quello che ho fatto è stato aggiungere l'IP del mio server Digital ocean droplet, invece di localhost, e ha funzionato:
env: {
ROOT_URL: 'http://yourdomain.com',
MONGO_URL: 'mongodb://104.236.24.66:27017/meteor',
PORT: 3002,
},
MODIFICA: usa MUP per distribuire i tuoi progetti meteorici: https://github.com/zodern/meteor-up
env: {
ROOT_URL: 'https://www.example.com',
MONGO_URL: 'mongodb://localhost/meteor',
},
Mup utilizza Docker e "collegherà" i tuoi 2 contenitori, ospitando così sia l'app che mongo sulla stessa VM (server). Il tuo mongoDB non dovrebbe essere accessibile dall'IP pubblico per motivi di sicurezza.
Devi mantenere la tua app in esecuzione in una finestra del terminale, quindi aprirne un'altra e digitare "meteor mongo" e dovrebbe funzionare!