| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

Cloud Functions for Firebase

提供: MyMemoWiki
ナビゲーションに移動 検索に移動

Cloud Functions for Firebase

Firebase | Google Cloud Platform

環境構築

処理

典型的な使用例

関心事が発生したときにユーザーに通知

GoogleCloudFunctions UseCase1.png

データベースのサニタイズとメンテナンスを実行

GoogleCloudFunctions UseCase2.png

アプリではなくクラウドで集中的なタスクを実行

GoogleCloudFunctions UseCase3.png

サードパーティのサービスおよび API と統合

GoogleCloudFunctions UseCase4.png

サンプル

HTTP エンドポイント

  • HTTPエンドポイントに対するリクエストを行うと、Express.JS スタイルの Request オブジェクトと Response オブジェクトが onRequest() コールバックに渡されます。
  • 呼び出し可能な関数と同様に HTTP 関数は同期的。
  • できるだけ早くレスポンスを送信し、Cloud Firestore による作業を遅らせる必要があります。addMessage() HTTP 関数は、テキスト値を HTTP エンドポイントに渡し、/messages/:documentId/original パスの下でデータベースに挿入する。
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();

export const addMessage = functions.https.onRequest((request, response) => {
    const original = request.query.text;
    admin.firestore().collection("message").add({original: original}).then(
        (data) => {
            response.json({result: `Message with ID: ${data.id} added.`});
        }
    ).catch(
        (e) => {
            response.json(e);
        }
    );
});
  • deploy
$ firebase deploy --only functions 
  • Firebase コンソールに登録された

Cloud functions sample3.png

  • 呼び出してみる

Cloud functions sample1.png

  • Firestoreに登録された

Cloud functions sample2.png

関数トリガー

  • Cloud Firestore に書き込まれるときに実行される
  • ref.set 関数ではリッスン対象のドキュメントを定義。パフォーマンス上の理由から、可能な限り具体的にする必要があります。*
  • 中かっこ({documentId} など)は、パラメータを囲みます。これは、コールバックで一致したデータを公開するワイルドカードです。
  • Cloud Firestore は、指定されたドキュメント上でデータの書き込みまたは更新が行われるたびに、onWrite() コールバックをトリガー。

注意: たとえば、特定の Cloud Firestore ドキュメントへの書き込みによってトリガーされ、その同じパスに書き込むことによって終了する関数は無限ループになります。 1つのイベントに対して複数回実行しても同じ結果が得られるよう、関数は必ずべき等方式で記述してください。 Cloud Firestore イベントなどのイベント ドリブンの関数は非同期です。コールバック関数は、null、オブジェクト、Promise のいずれかを返す必要があります。何も返さない場合、関数はタイムアウトし、エラーを通知し、再試行されます。

export const makeUpperCase = functions.firestore.document(`/message/{documentId}`).onCreate(
    (snap, context) => {
        const original = snap.data()?.original;
        const uppercase = original.toUpperCase();
        return snap.ref.set({uppercase}, {merge: true});
    }
);

Cloud functions trigger sampl1.png

Tips

環境構築

ファイルアップロード

Cloud Vision

アプリから呼び出す