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 ?
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 ?
Note que cela ne fonctionnera pas sur prod si l'on déploie sur meteor -- voir stackoverflow.com/questions/21971036/
@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.
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
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.
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'.
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.
Cela signifie-t-il que nous devrions fournir l'hébergement de mongodb à meteor au lieu de l'héberger par d'autres moyens ?
@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...
@Drake : Si vous souhaitez que je place mon commentaire comme réponse (si cela a fonctionné pour vous), faites-le moi savoir.
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.
0 votes
Dror ( stackoverflow.com/users/460278/dror ) a la bonne réponse ci-dessous : stackoverflow.com/a/12996674/1114274
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
1 votes
Merci beaucoup de me l'avoir indiqué. Je suis plus confiant maintenant.