サンプル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のものと異なるので注意が必要です。
最終更新
役に立ちましたか?