Comment puis-je utiliser un MongoDB existant dans un projet Meteor?

disons qu'il y a un serveur MongoDB en cours d'exécution pour un client GUI (par wxPython ) pendant un certain temps.

comment relier mon nouveau projet Meteor à mon déjà existant MongoDB ?

83
demandé sur mitchken 2012-05-14 21:15:49

7 réponses

utiliser la variable d'environnement MONGO_URL. Quelque chose comme:

export MONGO_URL=mongodb://localhost:27017/your_db

remplacer your_db par meteor ou n'importe quel db que vous voulez utiliser.

152
répondu Dror 2016-09-28 23:31:12

Nous utilisons des npm :

  • créez un fichier package.json avec npm init , si vous n'en avez pas déjà un.

  • Entrer et modifier la ligne suivante dans ce fichier (en remplaçant tous les <...> ):

"scripts": {"meteor": "MONGO_URL=mongodb://<USER>:<PASSWORD>@<SERVER>:<PORT>/<DB> meteor"}
  • vous pouvez alors commencer meteor avec juste npm run meteor
14
répondu malix 2016-09-28 23:36:54

Dans les commentaires de danny la réponse de Tom Wijsman recommande patcher packages/mongo-livedata/mongo_driver.js, ligne 21. Une meilleure place est dans app/météore/exécuter.js, ligne 460. De cette façon, la variable d'environnement est toujours captée si elle est présente, comme lors de L'exécution de Meteor sur Heroku. Il suffit de changer le code dur par défaut mongodb://127.0.0.1 à L'emplacement de votre serveur MongoDB.

9
répondu David Wihl 2017-05-23 12:10:47

vous pouvez utiliser db.copyDatabase pour le faire, avec une mise en garde qu'il y a un bug 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 démarrant votre application Meteor, puis en faisant:

mongo --port 3002

cela vous connectera au serveur Mongo de L'application Meteor. Maintenant db.copyDatabase comme ceci:

db.copyDatabase('myappDatabase', 'meteor', 'localhost');

cela copiera la base de données myappDatabase à partir d'un serveur MongoDB tournant sur le port standard de localhost, vers le serveur Meteor app Mongo. Le nom de la base de données que L'application Meteor utilise est'meteor'.

4
répondu Josh Wulf 2012-10-19 12:33:44

copiez simplement les données dans la base de données MongoDB de Meteor - pas de raison d'essayer de connecter Meteor à la base de données existante et de risquer d'écraser des choses.

utilisez mongoexport pour décharger 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 tourne sur le port 3002 avec bind_address 127.0.0.1, et les fichiers de données sont 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
répondu danny 2016-12-11 08:52:02

Tout ce que j'ai fait c'est ajouter L'IP de mon serveur de gouttelettes d'océan numérique, au lieu de localhost, et ça a marché:

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 meteor: 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 depuis L'IP publique pour des raisons de sécurité.

0
répondu Milean 2018-01-08 11:48:31

vous devez garder votre application en cours d'exécution dans une fenêtre de terminal puis ouvrir un autre et tapez "meteor mongo" et il devrait fonctionner!

-5
répondu pablo escobrah 2015-09-07 11:47:39