0
1

More than 3 years have passed since last update.

Firestoreの対話型シェルをいきなり起動する

Last updated at Posted at 2019-12-14

Firestoreでちょっとしたクエリの実験するときにNode.jsのREPL(Read-Eval-Print-Loop)使って対話型シェルを利用している人は多いと思います。その時、毎回nodeコマンドを実行したあとに.load スクリプト名などとして接続をしている人はまさかいませんね? 人によってやり方は様々だと思いますが私のスクリプトを以下に貼っておきます。

db
#!/bin/bash                                                                                                                                                                     
node --require await-outside/repl -i -e "                                                                                                                                                                    
  const firebase = require('firebase-admin');
  var serviceAccount = require('./.service-account.json');
  firebase.initializeApp({
      credential: firebase.credential.cert(serviceAccount)
  });
  var db = firebase.firestore();
"

このスクリプトを開発環境のFirebaseプロジェクトのトップにでも設置しておけば./dbのコマンドでFirestoreへの対話型シェルが出現します。以下のような感じで実行できます。便利でしょ?

$ ./db
> await db.collection('tests').doc('hoge').set({name: 'oreore'});
WriteResult {
  _writeTime: Timestamp { _seconds: 1576307204, _nanoseconds: 63907000 } }
> (await db.collection('tests').doc('hoge').get()).data()
{ name: 'oreore' }

設置方法

設置方法を簡単に開設しておきます。やるべきことはパッケージのインストールとFirebaseサービスアカウントのキーの配置です。

パッケージのインストール

ここで使うのはこの2つ

npm i firebase-admin --save
npm i await-outside --save

サクッとインストール。

サービスアカウントのキーの配置

FirebaseコンソールにログインしてサイドメニューのSettings>ユーザーと権限からたどって新しい秘密鍵の生成をクリックします。

image.png

ここから得られるjsonを.service-account.jsonという名前で、冒頭のdbスクリプトと同じディレクトリに配置します。このファイルは機密情報を含んでいるので忘れずにgitignoreしときましょう。

あ、dbスクリプトに実行権限を与えることもお忘れなく。

以上

Special Thanks

0
1
0

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
0
1