LoginSignup
7
4

More than 3 years have passed since last update.

Node.jsでCloud FirestoreとRealtime Databaseの使い始めメモ

Posted at

Firebaseをデータベースとして扱おうとした時に、Functionsなどのホスティング環境があってなかなかググラビリティが悪いのでちょっとまとめてみたメモです。機能がどうだってのは触れません。

Firebaseのデータベースは現状2種類

Realtime DatabaseCloud Firestoreがあります。

スクリーンショット 2019-08-15 17.37.29.png

管理画面の項目をまとめるとイメージはたぶんこんな感じ。

スクリーンショット 2019-08-15 21.03.13.png

接続の仕方がそれぞれ違う

Node.jsの場合、firebase-adminを使ってアクセスします。

Realtime Database

admin.database()でインスタンス作成。

app.js
const admin = require("firebase-admin");

const serviceAccount = require("path/to/serviceAccountKey.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://<プロジェクト名>.firebaseio.com"
});

//↑ここまでは共通 ↓ここから記述が分かれる

const db = admin.database();
const ref = db.ref("mytopic");

ref.on("value", function(snapshot) {
    console.log(snapshot.val());
}, 
function(errorObject) {
    console.log("The read failed: " + errorObject.code);
} );

Cloud Firestore

admin.firestore()でインスタンス作成。

app.js
const admin = require("firebase-admin");

const serviceAccount = require("path/to/serviceAccountKey.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://<プロジェクト名>.firebaseio.com"
});

//↑ここまでは共通 ↓ここから記述が分かれる

const db = admin.firestore();
db.collection('mytopic').get()
  .then((snapshot) => {
    snapshot.forEach((doc) => {
      console.log(doc.id, '=>', doc.data());
    });
  })
  .catch((err) => {
    console.log('Error getting documents', err);
  });
7
4
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
7
4