Supposons qu'un serveur MongoDB est en cours d'exécution pour un client d'interface graphique (par wxPython ) pendant un certain temps.
Comment pourrais-je connecter mon nouveau projet Meteor à mon déjà existant MongoDB?
Utilisez la variable d'environnement MONGO_URL. Quelque chose comme:
export MONGO_URL=mongodb://localhost:27017/your_db
Remplacez your_db
par meteor
ou la base de données que vous souhaitez utiliser.
Nous utilisons npm
:
Créez un fichier package.json
avec npm init
, si vous n'en avez pas déjà.
Entrez et modifiez la ligne suivante dans ce fichier (en remplaçant tous les <...>
'):
"scripts": {"meteor": "MONGO_URL=mongodb://<USER>:<PASSWORD>@<SERVER>:<PORT>/<DB> meteor"}
npm run meteor
Dans les commentaires de la réponse de Danny, Tom Wijsman recommande patcher les paquetages/mongo-aliveata/mongo_driver.js, ligne 21. Un meilleur emplacement se trouve dans app/meteor/run.js, ligne 460. ramassé si présent, comme lorsque vous utilisez Meteor sur Heroku. Il suffit de changer le mongodb: //127.0.0.1 codé en dur par défaut pour l’emplacement de votre serveur MongoDB.
Pour ce faire, vous pouvez utiliser db.copyDatabase, en précisant qu’il existe un bogue et que vous ne pouvez pas mettre à jour les données dans Meteor. Voir https://github.com/meteor/meteor/issues/61
Si vous utilisez la version de développement de Meteor, vous pouvez transférer des données d'un serveur MongoDB en cours d'exécution en démarrant votre application Meteor, puis en effectuant les actions suivantes:
mongo --port 3002
Cela vous connectera au serveur Mongo de l'application Meteor. Maintenant, utilisez db.copyDatabase comme ceci:
db.copyDatabase('myappDatabase', 'meteor', 'localhost');
Cela copiera la base de données myappDatabase d'un serveur MongoDB s'exécutant sur le port standard de localhost, sur le serveur Mongo de l'application Meteor. Le nom de base de données utilisé par l'application Meteor est "météore".
Il suffit de copier les données dans la base de données Meteor MongoDB - aucune raison d’essayer de relier Meteor à la base de données existante et de risquer d’écraser des éléments.
Utilisez mongoexport
pour vider vos collections individuellement, puis mongoimport
pour importer les fichiers dans la base de données nommée meteor
dans l'instance de Meteor MongoDB. L'instance de Meteor MongoDB s'exécute sur le port 3002 avec bind_address 127.0.0.1 et les fichiers de données se trouvent dans le sous-répertoire du projet Meteor .meteor/local/db
.
Voir la documentation si vous n'êtes pas familier avec l'import/export dans MongoDB.
J'ai simplement ajouté l'adresse IP de mon serveur de gouttelettes Digital Ocean, au lieu de localhost, et cela a fonctionné:
env: {
ROOT_URL: 'http://yourdomain.com',
MONGO_URL: 'mongodb://104.236.24.66:27017/meteor',
PORT: 3002,
},
EDIT: Utilisez MUP pour déployer vos projets météores: https://github.com/zodern/meteor-up
env: {
ROOT_URL: 'https://www.example.com',
MONGO_URL: 'mongodb://localhost/meteor',
},
Mup utilise Docker et "liera" vos 2 conteneurs, hébergeant ainsi l'application et le Mongo sur le même VM (serveur). Votre mongoDB ne devrait pas être accessible depuis l’IP publique pour des raisons de sécurité.