Cloud Functions for Firebase
目次
Cloud Functions for Firebase
Firebase | Google Cloud Platform
環境構築
- https://firebase.google.com/docs/functions/get-started?hl=ja
- Cloud Functions for Firebase の開発環境をととのえる
処理
典型的な使用例
関心事が発生したときにユーザーに通知
データベースのサニタイズとメンテナンスを実行
アプリではなくクラウドで集中的なタスクを実行
サードパーティのサービスおよび API と統合
サンプル
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 コンソールに登録された
- 呼び出してみる
- Firestoreに登録された
関数トリガー
- 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}); } );
Tips
環境構築
ファイルアップロード
Cloud Vision
アプリから呼び出す
© 2006 矢木浩人