| ページ一覧 | ブログ | 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 パスの下でデータベースに挿入する。
  1. import * as functions from 'firebase-functions';
  2. import * as admin from 'firebase-admin';
  3. admin.initializeApp();
  4.  
  5. export const addMessage = functions.https.onRequest((request, response) => {
  6. const original = request.query.text;
  7. admin.firestore().collection("message").add({original: original}).then(
  8. (data) => {
  9. response.json({result: `Message with ID: ${data.id} added.`});
  10. }
  11. ).catch(
  12. (e) => {
  13. response.json(e);
  14. }
  15. );
  16. });
  • deploy
  1. $ 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 のいずれかを返す必要があります。何も返さない場合、関数はタイムアウトし、エラーを通知し、再試行されます。

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

Cloud functions trigger sampl1.png

Tips

環境構築

ファイルアップロード

Cloud Vision

アプリから呼び出す