71 votes

Existe-t-il un moyen simple d’exporter les données à partir d’une application déployée par météore?

Existe-t-il un moyen simple d’exporter les données à partir d’une application déployée par météore?

Donc, par exemple, si j'avais déployé une application nommée test.meteor.com ...

Comment puis-je télécharger facilement les données collectées par cette application - afin de pouvoir les exécuter localement avec les données de l'application déployée?

Merci.

90voto

Scott Anderson Points 703

Pour obtenir l'URL de votre site déployé sur meteor.com, utilisez la commande (vous devrez peut-être fournir le mot de passe de votre site si vous l'avez protégé par mot de passe):

 meteor mongo --url YOURSITE.meteor.com
 

Ce qui retournera quelque chose comme:

 mongodb://client:PASSWORD@sky.member1.mongolayer.com:27017/YOURSITE_meteor_com
 

Que vous pouvez donner à un programme comme mongodump

 mongodump -u client -h sky.member1.mongolayer.com:27017 -d YOURSITE_meteor_com\
          -p PASSWORD
 

Le mot de passe n'est valable que pour une minute. Pour usage:

 $ meteor --help mongo
 

38voto

iMagdy Points 311

Et voici comment faire le contraire: (télécharger votre base de données monogo locale sur météore)

https://gist.github.com/IslamMagdy/5519514

 # How to upload local db to meteor:

# -h = host, -d = database name, -o = dump folder name
mongodump -h 127.0.0.1:3002 -d meteor -o meteor

# get meteor db url, username, and password
meteor mongo --url myapp.meteor.com

# -h = host, -d = database name (app domain), -p = password, folder = the path to the dumped db
mongorestore -u client -h c0.meteor.m0.mongolayer.com:27017 -d myapp_meteor_com -p 'password' folder/
 

10voto

jerico Points 412

Sur la base de la solution de Kasper Souren, j'ai créé un script mis à jour qui fonctionne avec les versions actuelles de Meteor et fonctionne également lorsque vous protégez votre application Meteor distante avec un mot de passe.

Veuillez créer le script suivant parse-mongo-url.coffee :

 spawn = require('child_process').spawn
mongo = spawn 'meteor', ['mongo', '--url', 'YOURPROJECT.meteor.com'], stdio: [process.stdin, 'pipe', process.stderr]

mongo.stdout.on 'data', (data) ->
    data = data.toString()
    m = data.match /mongodb:\/\/([^:]+):([^@]+)@([^:]+):27017\/([^\/]+)/
    if m?
        process.stdout.write "-u #{m[1]} -p #{m[2]} -h #{m[3]} -d #{m[4]}"
    else
        if data == 'Password: '
            process.stderr.write data
 

Puis exécutez-le comme ceci dans un shell * nix:

 mongodump `coffee parse-mongo-url.coffee`
 

5voto

PuerkitoBio Points 4721

Je suppose que tes données sont dans une base de données mongodb, si c'est le cas, la question est plus mongo-que meteor. Vous pouvez prendre un coup d'oeil à mongoexport et mongoimport outils de ligne de commande.

Edit (pour exemple):

mongoexport -h flame.mongohq.com:12345 -u my_user -p my_pwd -d my_db -c my_coll

Vous devez installer mongodb sur votre ordinateur pour avoir cet outil de ligne de commande, et, évidemment, vous avez besoin de votre mongodb informations. Dans l'exemple ci-dessus, je me connecte à MongoHQ (flame.mongohq.com est l'hôte, '12345' est le port de votre mongo serveur), mais je ne sais pas qui Mongo hôte est en fait utilisé par le météore d'hébergement. Si vous avez essayé de le Météore exemples (TODOs, Classement, etc.) localement, les chances sont que vous avez déjà installé Mongo, car il utilise un serveur local par défaut.

3voto

Le Stephane Points 21

Voici une autre solution à bash

 #! /bin/bash
# inspired by http://stackoverflow.com/questions/11353547/bash-string-extraction-manipulation

# http://www.davidpashley.com/articles/writing-robust-shell-scripts/
set -o nounset
set -o errexit
set -o pipefail
set -x

# stackoverflow.com/questions/7216358/date-command-on-os-x-doesnt-have-iso-8601-i-option
function nowString {
    date -u +"%Y-%m-%dT%H:%M:%SZ"
}

NOW=$(nowString)

# prod_url="mongodb://...:...@...:.../..."
prod_pattern="mongodb://([^:]+):([^@]+)@([^:]+):([^/]+)/(.*)"
prod_url=$(meteor mongo katapoolt --url | tr -d '\n')
[[ ${prod_url} =~ ${prod_pattern} ]]
PROD_USER="${BASH_REMATCH[1]}"
PROD_PASSWORD="${BASH_REMATCH[2]}"
PROD_HOST="${BASH_REMATCH[3]}"
PROD_PORT="${BASH_REMATCH[4]}"
PROD_DB="${BASH_REMATCH[5]}"
PROD_DUMP_DIR=dumps/${NOW}
mkdir -p dumps

# local_url="mongodb://...:.../..."
local_pattern="mongodb://([^:]+):([^/]+)/(.*)"
local_url=$(meteor mongo --url | tr -d '\n')
[[ ${local_url} =~ ${local_pattern} ]]
LOCAL_HOST="${BASH_REMATCH[1]}"
LOCAL_PORT="${BASH_REMATCH[2]}"
LOCAL_DB="${BASH_REMATCH[3]}"

mongodump --host ${PROD_HOST} --port ${PROD_PORT} --username ${PROD_USER} --password ${PROD_PASSWORD} --db ${PROD_DB} --out ${PROD_DUMP_DIR}
mongorestore --port ${LOCAL_PORT} --host ${LOCAL_HOST} --db ${LOCAL_DB} ${PROD_DUMP_DIR}/${PROD_DB}
 

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