【入門】Firestoreの使い方

簡単な操作を通じて、Firestoreの概要を確認します。管理画面で「データベースの作成」「コレクション・ドキュメントの追加」を行い、Node.jsから「ドキュメントを取得」といった作業を行います。

データベースの作成

Authenticationによるユーザー認証の動作確認 で作成したプロジェクトで作業を進めます。

721-firebase-firestore-introduction_01.png

データベースの作成をクリックします。

721-firebase-firestore-introduction_02.png

今回は動作確認目的なので、テストモードで開始を選択して全ドキュメントにアクセスできるようにします。

721-firebase-firestore-introduction_03.png

asia-northeast1( 東京 )を選択します。

参考
リージョンのロケーション

ドキュメントを追加

Firestoreの構成要素

要素 概要
コレクション ドキュメントを格納できる。
ドキュメント 複数のデータ サブコレクションを格納できる。
JSONによく似ている。
データ キーと値のセット。
users: {                // コレクション
  xxx: {                // ドキュメント
    name: {             // データ > map
      first: 'tarou',   // データ > string
      last: 'yamada'    // データ > string
    },
    old: 27,            // データ > number
    posts: {            // サブコレクション
      111: {},          // ドキュメント
      222: {}           // ドキュメント
    }
  },
  yyy: {                // ドキュメント
    name: {             // データ > map
      first: 'satoshi', // データ > string
      last: 'suzuki'    // データ > string
    },
    old: 35,            // データ > number
    posts: {            // サブコレクション
      333: {}           // ドキュメント
    }
  }
}

コレクション・ドキュメントを追加

721-firebase-firestore-introduction_04.png

コレクションを開始をクリックします。

721-firebase-firestore-introduction_05_01.png

コレクションIDとしてusersと入力しました。

721-firebase-firestore-introduction_05.png

最初のドキュメントを入力します。

参考
サポートされているデータ型 | Firebase

サブコレクションを追加

721-firebase-firestore-introduction_06.png

先ほど追加したドキュメントにサブコレクションを追加してみます。

721-firebase-firestore-introduction_07.png

postsというサブコレクションを追加しました。

Node.jsでアクセス

Node.jsでプログラムを実装して、管理コンソールで追加したドキュメントを取得してみます。

SDKをインストール

npm i --save firebase

ドキュメント取得

app.js に以下処理を記述します。

(async () => {
  try {
    const firebase = require('firebase')
    const config = {
      apiKey: '### FIREBASE API KEY ###',
      authDomain: '### FIREBASE AUTH DOMAIN ###',
      projectId: '### CLOUD FIRESTORE PROJECT ID ###',
    }
    firebase.initializeApp(config)
    const db = firebase.firestore()

    const userRef = db.collection('users').doc('kpUVKKold2s0rMcDnPTx')
    const userDoc = await userRef.get()
    if (userDoc.exists) {
      console.log(userDoc.id)
      console.log(userDoc.data())
      console.log(userDoc.get('name'))
      console.log(userDoc.get('old'))
    } else {
      console.log('No such document!')
    }
    await db.app.delete()
  } catch (err) {
    console.log(`Error: ${JSON.stringify(err)}`)
  }
})()

動作確認

実行結果です。

$ node app.js 
kpUVKKold2s0rMcDnPTx
{ name: 'yamada', old: 35 }
yamada
35

参考・関連