Merci pour le commentaire. Je sais que la solution de @ Dror est beaucoup plus officielle qu'un hack, mais j'ai déjà attribué une réponse auparavant. Je ne suis pas tout à fait sûr que ce soit un bon comportement et permis de changer / mettre à jour "réponse" alors?
@SurjithSM export MONGO_URL=mongodb://localhost:27017/my_database_namemettra 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.
Benjamin Crouzier
1
Cela peut-il être fait avec un fichier de configuration? Essayé avec settings.json et cela ne fonctionnera pas
Kostanos
1
cela a écrasé mon application locale.
Deborah
14
Nous utilisons npm:
Créez un package.jsonfichier 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 <...>):
'MONGO_URL' n'est pas reconnu comme une commande interne ou externe
Abdul Hameed
1
c'est une variable d'environnement, assurez-vous qu'il n'y a pas d'espace autour du signe =
malix
9
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:
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 mongoexportpour vider vos collections individuellement, puis mongoimportpour importer les fichiers dans la base de données nommée meteordans 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.
Cela signifie-t-il que nous devrions fournir un hébergement mongodb à Meteor au lieu de l'hébergement par d'autres moyens?
Drake Guan
2
@Drake: À moins que vous ne puissiez ajuster Meteor pour qu'il fonctionne avec votre base de données. app/lib/mongo_runner.jsdé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 ...
Tamara Wijsman
@Drake: Si vous voulez que je place mon commentaire comme réponse (si cela a fonctionné pour vous), faites-le moi savoir.
Tamara Wijsman
@TomWijsman: J'ai essayé 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 ~
Drake Guan
mongochef est beaucoup plus facile à utiliser pour copier et coller des données, plutôt que les commandes d'exportation / importation. 3t.io/mongochef
Max Hodges
0
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é:
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é.
c'est en fait une mauvaise pratique d'utiliser l'adresse IP publique de votre VM pour le mongoDB, je vais mettre à jour ma réponse pour utiliser localhost.
Milean
0
J'ai passé beaucoup de temps et j'ai découvert qu'il fallait des citations autour de l'URL:
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!
Réponses:
Utilisez la variable d'environnement MONGO_URL. Quelque chose comme:
Remplacez
your_db
parmeteor
ou par la base de données que vous souhaitez utiliser.la source
export MONGO_URL=mongodb://localhost:27017/my_database_name
mettra les données dans une base de données nomméemy_database_name
. Il voulait dire que si tu veux, tu peux le faireexport 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 avecnpm init
, si vous n'en avez pas déjà un.Entrez et modifiez la ligne suivante dans ce fichier (en remplaçant tous les
<...>
):npm run meteor
la source
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.
la source
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:
Cela vous connectera au serveur Mongo de l'application Meteor. Maintenant, utilisez db.copyDatabase comme ceci:
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».
la source
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, puismongoimport
pour importer les fichiers dans la base de données nomméemeteor
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.
la source
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érieurpackages/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érezconsole.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é:
EDIT: utilisez MUP pour déployer vos projets météores: https://github.com/zodern/meteor-up
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é.
la source
J'ai passé beaucoup de temps et j'ai découvert qu'il fallait des citations autour de l'URL:
la source
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!
la source