85 votes

Comment utiliser une base de données MongoDB existante dans un projet Meteor ?

Supposons 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 projet MongoDB déjà existant ?

0 votes

0 votes

Merci pour votre commentaire. Je sais que la solution de @Dror est beaucoup plus officielle qu'un hack, mais j'ai déjà assigné une réponse auparavant. Je ne suis pas sûr que ce soit un comportement correct et autorisé de changer/mettre à jour la "réponse" dans ce cas ?

0 votes

"Vous pouvez à tout moment modifier la réponse acceptée ou simplement ne pas l'accepter. meta.stackexchange.com/a/5235/191226

157voto

Dror Points 923

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

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

Remplacer your_db con meteor ou toute autre base de données que vous souhaitez utiliser.

4 votes

Je suis bloqué. Pouvez-vous m'expliquer comment remplacer your_db par "meteor" ?

3 votes

Note que cela ne fonctionnera pas sur prod si l'on déploie sur meteor -- voir stackoverflow.com/questions/21971036/

2 votes

@SurjithSM export MONGO_URL=mongodb://localhost:27017/my_database_name placera les données dans une base de données nommée my_database_name . Il voulait dire que si vous voulez, vous pouvez faire export MONGO_URL=mongodb://localhost:27017/meteor . Je vous conseille de donner à votre base de données le même nom que celui de votre projet.

15voto

malix Points 798

Nous utilisons npm :

  • Créer un package.json avec npm init si vous n'en avez pas déjà un.

  • Saisissez et modifiez la ligne suivante dans ce fichier (en remplaçant tous les <...> 's) :

    "scripts": {"meteor": "MONGO_URL=mongodb://USER>:<PASSWORD>@<SERVER:<PORT>/<DB> meteor"}

  • Vous pouvez alors commencer météore avec seulement npm run meteor

9voto

David Wihl Points 881

En les commentaires à la réponse de danny Tom Wijsman recommande Parcheando packages/mongo-livedata/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 prise en compte si elle est présente, comme lors de l'exécution de Meteor sur Heroku. Changez simplement le code dur par défaut mongodb://127.0.0.1 pour l'emplacement de votre serveur MongoDB.

4voto

Sitapati Das Points 390

Vous pouvez utiliser db.copyDatabase pour faire cela, avec une mise en garde : il y a un bug et 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. Utilisez maintenant db.copyDatabase comme ceci :

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

Ceci copiera la base de données myappDatabase d'un serveur MongoDB fonctionnant sur le port standard sur localhost, vers le serveur Mongo de l'application Meteor. Le nom de la base de données utilisée par l'application Meteor est 'meteor'.

2voto

danny Points 2080

Il suffit de copier les données dans la base de données MongoDB de Meteor - il n'y a aucune raison d'essayer de connecter Meteor à la base de données existante et de risquer d'écraser les données.

Utilisation mongoexport pour déverser 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 fonctionne sur le port 3002 avec l'adresse de liaison 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.

0 votes

Cela signifie-t-il que nous devrions fournir l'hébergement de mongodb à meteor au lieu de l'héberger par d'autres moyens ?

2 votes

@Drake : A moins que vous ne puissiez ajuster Meteor pour qu'il fonctionne avec votre base de données. app/lib/mongo_runner.js décide de la manière de le lancer (il se peut même que vous n'ayez pas besoin de lancer le code, alors cherchez à savoir comment le désactiver). La connexion semble se faire à l'intérieur de packages/mongo-livedata/mongo_driver.js Je pense que vous pouvez simplement modifier le paramètre url à la ligne 21. Si vous voulez connaître sa valeur, insérez console.log(url); sur la ligne qui précède, redémarrez Meteor et observez attentivement la sortie de Meteor. Assurez-vous que vous appelez bien Meteor une fois dans votre application pour qu'il se déclenche...

0 votes

@Drake : Si vous souhaitez que je place mon commentaire comme réponse (si cela a fonctionné pour vous), faites-le moi savoir.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X