Disons qu'il existe un serveur MongoDB en cours d'exécution pour un client GUI (par wxPython ) pendant un certain temps.
Comment puis-je connecter mon nouveau projet Meteor à mon MongoDB déjà existant ?
Disons qu'il existe un serveur MongoDB en cours d'exécution pour un client GUI (par wxPython ) pendant un certain temps.
Comment puis-je connecter mon nouveau projet Meteor à mon MongoDB déjà existant ?
Réponses:
Utilisez la variable d'environnement MONGO_URL. Quelque chose comme:
export MONGO_URL=mongodb://localhost:27017/your_db
Remplacez your_db
par meteor
ou par la base de données que vous souhaitez utiliser.
export MONGO_URL=mongodb://localhost:27017/my_database_name
mettra les données dans une base de données nommée my_database_name
. Il voulait dire que si tu veux, tu peux le faire export MONGO_URL=mongodb://localhost:27017/meteor
. J'ai pensé que je vous conseillerais de nommer le nom de votre base de données comme celui de votre projet.
Nous utilisons npm
:
Créez un package.json
fichier avec npm init
, si vous n'en avez pas déjà un.
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 de patcher packages / mongo-livingata / mongo_driver.js, ligne 21. Un meilleur endroit est dans app / meteor / run.js, ligne 460. De cette façon, la variable d'environnement est toujours sélectionnée si elle est présente , comme lors de l'exécution de Meteor sur Heroku. Remplacez simplement le code par défaut mongodb: //127.0.0.1 par l'emplacement de votre serveur MongoDB.
Vous pouvez utiliser db.copyDatabase pour ce faire, avec une mise en garde indiquant qu'il y a 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 à partir d'un serveur MongoDB en cours d'exécution en démarrant votre application Meteor, puis en faisant:
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 fonctionnant sur le port standard sur localhost, sur le serveur Mongo de l'application Meteor. Le nom de la base de données utilisé par l'application Meteor est «meteor».
Copiez simplement les données dans la base de données Meteor MongoDB - aucune raison d'essayer de connecter Meteor à la base de données existante et de risquer d'écraser des choses.
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 Meteor MongoDB. L'instance 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
.
Consultez la documentation si vous n'êtes pas familier avec l'import / export dans MongoDB.
app/lib/mongo_runner.js
décide comment le lancer (il se peut que vous n'ayez même pas besoin de code de lancement, regardez donc comment le désactiver). La connexion semble se faire à l'intérieur packages/mongo-livedata/mongo_driver.js
, je pense que vous pouvez simplement changer le paramètre url sur la ligne 21. Si vous voulez connaître sa valeur, insérez console.log(url);
sur la ligne avant cela, redémarrez Meteor et surveillez de près votre sortie Meteor. Assurez-vous d'appeler Meteor une fois dans votre application pour qu'il se déclenche ...
console.log(url);
et j'ai obtenu l'info! Je vous suggère de rendre cela aussi complet qu'une réponse de contournement car je pense que cela aide la communauté, ou du moins, des gens comme moi ne connaissent pas encore le météore ~
Tout ce que j'ai fait a été d'ajouter l'adresse IP de mon serveur Digital Ocean Droplet, 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 à la fois l'application et mongo sur la même VM (serveur). Votre mongoDB ne devrait pas être accessible à partir de l'adresse IP publique pour des raisons de sécurité.
Vous devez garder votre application en cours d'exécution dans une fenêtre de terminal, puis en ouvrir une autre et taper "meteor mongo" et cela devrait fonctionner!