web-dev-qa-db-fra.com

Comment utiliser une MongoDB existante dans un projet Meteor?

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?

83
Drake Guan

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.

154
Dror

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"}
  • Vous pouvez ensuite démarrer météore avec seulement npm run meteor
14
malix

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.

9
David Wihl

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".

4
Josh Wulf

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.

2
danny

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é.

0
Milean