LoginSignup
55
49

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-10-03

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

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

参考元

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 

55
49
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
55
49