Digamos que hay un servidor MongoDB en ejecución para un cliente GUI (por wxPython ) durante un tiempo.
¿Cómo puedo conectar mi nuevo proyecto Meteor a mi MongoDB ya existente ?
Digamos que hay un servidor MongoDB en ejecución para un cliente GUI (por wxPython ) durante un tiempo.
¿Cómo puedo conectar mi nuevo proyecto Meteor a mi MongoDB ya existente ?
Respuestas:
Utilice la variable de entorno MONGO_URL. Algo como:
export MONGO_URL=mongodb://localhost:27017/your_db
Reemplace your_db
con meteor
o con la base de datos que desee usar.
export MONGO_URL=mongodb://localhost:27017/my_database_name
pondrá los datos en una base de datos llamada my_database_name
. Quería decir que si quieres, puedes hacerlo export MONGO_URL=mongodb://localhost:27017/meteor
. Pensé que aconsejaría nombrar el nombre de su base de datos de la misma manera que su proyecto.
Usamos npm
:
Cree un package.json
archivo con npm init
, si aún no tiene uno.
Ingrese y modifique la siguiente línea en ese archivo (reemplazando todas las <...>
's):
"scripts": {"meteor": "MONGO_URL=mongodb://<USER>:<PASSWORD>@<SERVER>:<PORT>/<DB> meteor"}
npm run meteor
En los comentarios a la respuesta de danny, Tom Wijsman recomienda parchear los paquetes / mongo-livedata / mongo_driver.js, línea 21. Un lugar mejor es app / meteor / run.js, línea 460. De esta manera, la variable de entorno aún se selecciona si está presente , como cuando se ejecuta Meteor en Heroku. Simplemente cambie el mongodb: //127.0.0.1 codificado por defecto a la ubicación de su servidor MongoDB.
Puede usar db.copyDatabase para hacer esto, con la advertencia de que hay un error y no puede actualizar los datos en Meteor. Ver https://github.com/meteor/meteor/issues/61
Si está utilizando la versión de desarrollo de Meteor, puede transferir datos desde un servidor MongoDB en ejecución iniciando su aplicación Meteor y luego haciendo:
mongo --port 3002
Esto lo conectará al servidor Mongo de la aplicación Meteor. Ahora use db.copyDatabase así:
db.copyDatabase('myappDatabase', 'meteor', 'localhost');
Esto copiará la base de datos myappDatabase de un servidor MongoDB que se ejecuta en el puerto estándar en localhost, al servidor Mongo de la aplicación Meteor. El nombre de la base de datos que utiliza la aplicación Meteor es 'meteorito'.
Simplemente copie los datos a la base de datos Meteor MongoDB, no hay razón para intentar conectar Meteor a la base de datos existente y arriesgarse a sobrescribir cosas.
Use mongoexport
para volcar sus colecciones individualmente, luego mongoimport
para importar los archivos a la base de datos nombrada meteor
en la instancia de Meteor MongoDB. La instancia de Meteor MongoDB se ejecuta en el puerto 3002 con bind_address 127.0.0.1, y los archivos de datos están en el subdirectorio del proyecto Meteor .meteor/local/db
.
Consulte la documentación si no está familiarizado con la importación / exportación en MongoDB.
app/lib/mongo_runner.js
decide cómo ejecutarlo (es posible que ni siquiera necesite el código de lanzamiento, por lo tanto, busque cómo deshabilitarlo). La conexión parece ocurrir en el interior packages/mongo-livedata/mongo_driver.js
, creo que simplemente puede cambiar el parámetro url en la línea 21. Si desea saber su valor, inserte console.log(url);
en la línea anterior, reinicie Meteor y observe de cerca la salida de Meteor. Asegúrese de llamar a Meteor una vez en su aplicación para que se active ...
console.log(url);
y obtuve la información! Le sugiero que haga esto tan completo como una respuesta alternativa porque creo que brinda ayuda a la comunidad, o al menos, a personas como yo que aún no están familiarizadas con el meteorito ~
Todo lo que hice fue agregar la IP de mi servidor de gotas oceánicas digitales, en lugar de localhost, y funcionó:
env: {
ROOT_URL: 'http://yourdomain.com',
MONGO_URL: 'mongodb://104.236.24.66:27017/meteor',
PORT: 3002,
},
EDITAR: use MUP para implementar sus proyectos de meteoritos: https://github.com/zodern/meteor-up
env: {
ROOT_URL: 'https://www.example.com',
MONGO_URL: 'mongodb://localhost/meteor',
},
Mup usa Docker y "vinculará" sus 2 contenedores, alojando así tanto la aplicación como mongo en la misma VM (servidor). Su mongoDB no debería ser accesible desde la IP pública por razones de seguridad.
Tienes que mantener tu aplicación ejecutándose en una ventana de terminal, luego abrir otra y escribir "meteor mongo" ¡y debería funcionar!