Help us understand the problem. What is going on with this article?

firebase-toolsのコマンドの使い方

More than 1 year has passed since last update.

firebase-toolsのコマンドの使用方法について以下にメモします。必要に応じて更新します。

Firebaseプロジェクトは既に作成されていることを前提とします。インストール方法などは、@kohasiさんのFirebaseの始め方にあります。

参考元

https://github.com/firebase/firebase-tools

firebase-toolsのインストール

# firebase toolをインストール
npm install -g firebase-tools

ログイン

以下のコマンドを実行するとgoogleのアカウント選択画面がでます。

firebase login

✔  Success! Logged in as <mail address>

Firebase CLIに許可を与えてください。

Screen Shot 2016-09-30 at 13.51.10.png

ログアウト

firebase logout

firebaseへのデータ挿入

jsonデータの作成

firebase-toolsを使用してfirebaseへデータを挿入するには、json形式データを作成する必要があります。
1行データなど簡単なデータは標準入力で作成可能ですが、ここではテキストファイルに作成します。1

heroes.txt
{ "heroes": [
    { "id": 11, "name": "Mr. Nice" },
    { "id": 12, "name": "Narco" },
    { "id": 13, "name": "Bombasto" },
    { "id": 14, "name": "Celeritas" },
    { "id": 15, "name": "Magneta" },
    { "id": 16, "name": "RubberMan" },
    { "id": 17, "name": "Dynama" },
    { "id": 18, "name": "Dr IQ" },
    { "id": 19, "name": "Magma" },
    { "id": 20, "name": "Tornado" }
  ]
}

プロジェクトの表示

以下のコマンドを実行すると、作成済みのプロジェクト一覧が表示されます。
ここで表示されるProject IDは後で使います。
例では、project-12345となっていますが、作成したプロジェクト名に読み替えてください。

firebase list

# outputの例
#  ┌──────────────┬───────────────────────┬─────────────┐
#  │ Name         │ Project ID / Instance │ Permissions │
#  ├──────────────┼───────────────────────┼─────────────┤
#  │ Project      │ project-12345         │ Owner       │
#  └──────────────┴───────────────────────┴─────────────┘

firebaseに格納する

以下のコマンドでコマンドラインからデータを挿入できます。
ここではパスをルート/にしていますが、用途に応じて変更してください。
注意:ルート/に指定した場合、同一プロジェクトで既に登録した同階層及び、配下のデータが全て削除されます。

# Usage: database:set [options] <path> [infile]
firebase database:set --project project-12345 / heroes.txt 

格納したデータの取得

以下のコマンドで格納したデータを取得できます。

# Usage: database:get [options] <path>
firebase database:get --project project-12345 /

# output
# {"heroes":[{"id":11,"name":"Mr. Nice"},{"id":12,"name":"Narco"},{"id":13,"name":"Bombasto"},{"id":14,"name":"Celeritas"},{"id":15,"name":"Magneta"},{"id":16,"name":"RubberMan"},{"id":17,"name":"Dynama"},{"id":18,"name":"Dr IQ"},{"id":19,"name":"Magma"},{"id":20,"name":"Tornado"}]}

データはfirebaseコンソールのDatabaseからも確認できます。
Screen Shot 2016-10-03 at 17.01.46.png

バックアップ/リストアシェルの例

こんな感じのシェルがあると、データの保管やリストアに便利です。
標準入力により、バックアップか、リストアか、リストアなら何のファイルを?を選択して実行できます。

export PATH=###パスを通してない場合npm、firebaseがある場所を指定###
BACKUP_DIR=###バックアップディレクトリ###
PROJECT_NAME=###プロジェクト名###
PREFIX=###ファイルの拡張子や識別子 ex) firebase.json###
FIREBASE_DIR=###バックアップ取得対象###

echo -e "1 backup\n2 restore"
read -p  "select number :" num

[ ! -e $BACKUP_DIR ] && mkdir -p $BACKUP_DIR

case $num in
1)
  DATE=`date "+%Y%m%d%H%M%S"`
  echo "backup to ${DATE}.${PREFIX}"
  firebase database:get --project ${PROJECT_NAME} ${FIREBASE_DIR} >${BACKUP_DIR}/${DATE}.${PREFIX};;

2)
  options=(`ls -t1 ${BACKUP_DIR}/*.${PREFIX}`)
  i=1; for option in ${options[@]}; do echo $i $option; i=$((i+1)); done
  read -p  "select number :" num
  target=${options[$((num-1))]}
  echo "restore from ${target}"
  firebase database:set --project ${PROJECT_NAME} ${FIREBASE_DIR} ${target};;
esac

if [ $? = 0 ]; then echo "success."; else echo "failure"; fi

firebase database:XXX系コマンド

コマンド 説明 Usage
database:get プロジェクトのデータベースからデータを取得し、JSON形式で表示する。インデックスクエリをサポートする。 firebase database:get [options] <path>
database:set 指定したデータベースの部分の全てのデータを置換する。入力にはファイル、標準入力、コマンドライン引数が使える。 firebase database:set [options] <path> [infile]
database:update 指定したデータベースの部分に更新を行う。入力にはファイル、標準入力、コマンドライン引数が使える。 firebase database:update [options] <path> [infile]
database:push 指定したデータベースの部分にリストを入れる。入力にはファイル、標準入力、コマンドライン引数が使える。 firebase database:push [options] <path> [infile]
database:remove 指定したデータベースの部分のデータを削除する。 firebase database:remove [options] <path>

雑記

  • データベースのルールをコマンドラインから取得する方法を探しましたが、見つけられませんでした。:(

  1. jsonデータの検証は、オンラインエディタが便利ですJSON Editor Online 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away