サンプル1(GETサンプル)

NCMB (ニフクラ mobile backend) のGETメソッドのサンプルを、Firebase FunctionsとFirebase Firestoreを使って実装する方法について解説しています。

概要

  • NCMBのGETメソッドのサンプルをFirebaseで再現。

  • Firestoreの Item コレクションからデータを取得し、ランダムに選択されたレコードを返す。

Firebase Functionsのコード

  • get_random 関数を定義して、Firestoreから Item コレクションのデータを取得。

  • 取得したデータの中からランダムに1つのドキュメントを選択し、そのデータを返す。

  • コード例:

    const get_random = functions.https.onCall(async (data, context) => {
      const db = admin.firestore();
      const ref = db.collection('Item');
      const snapshot = await ref.get();
      if (snapshot.empty) {
        return null;
      }
      const docIds = snapshot.docs.map(doc => doc.id);
      const randomIndex = Math.floor(Math.random() * docIds.length);
      const randomDocId = docIds[randomIndex];
      const docSnapshot = await ref.doc(randomDocId).get();
      return docSnapshot.data();
    });
    
    exports.get_random = get_random;

アプリ側のコード

  • Firebase Functionsで定義した get_random 関数をアプリから呼び出す。

  • 結果をコンソールに表示し、エラーがあればハンドリングする。

  • コード例:

        const get_random = httpsCallable(functions, 'get_random');
        get_random().then((result) => {
            // 結果の表示
            log(result.data);
        }).catch((error) => {
            // エラーのハンドリング
            log('Error');
            log(error);
        });

解説

  • result.data は単純なJSONオブジェクトです。NCMBと異なり、ドキュメントのIDは含まれていません。ドキュメントのIDを結果に含めたい場合は、サーバー側のコードを以下のように変更する必要があります:

    return {
      id: randomDocId,
      ...docSnapshot.data()
    };
  • Firebase Functionsの error オブジェクトは、NCMBのものと異なるので注意が必要です。

最終更新