Comment puis-je utiliser un MongoDB existant dans un projet Meteor?
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.
Nous utilisons des npm
:
-
créez un fichier
package.json
avecnpm 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
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.
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'.
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.
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é.
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!