Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9021

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

$
0
0

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

db
#!/bin/bash                                                                                                                                                                     
node--requireawait-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


Viewing all articles
Browse latest Browse all 9021

Trending Articles