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に許可を与えてください。
ログアウト
firebase logout
firebaseへのデータ挿入
jsonデータの作成
firebase-toolsを使用してfirebaseへデータを挿入するには、json形式データを作成する必要があります。
1行データなど簡単なデータは標準入力で作成可能ですが、ここではテキストファイルに作成します。1
{ "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からも確認できます。
バックアップ/リストアシェルの例
こんな感じのシェルがあると、データの保管やリストアに便利です。
標準入力により、バックアップか、リストアか、リストアなら何のファイルを?を選択して実行できます。
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> |
雑記
- データベースのルールをコマンドラインから取得する方法を探しましたが、見つけられませんでした。:(
-
jsonデータの検証は、オンラインエディタが便利ですJSON Editor Online ↩