本記事の対象
- FirebaseのCloudFunctionsを学習中
- TypeScriptで書かれた関数をCloudFunctionsにデプロイしたい人
実装内容
- クライアントサイドからのリクエストをトリガーとするonCall関数の実装
- 定期的に自動実行されるonSchedule関数の実装
実装
Firebaseの初期設定
- firebaseの初期設定については以下の記事を参考にしてください
Firebase CLI/SDKの初期設定
onCallの実装
- 処理内容
- クライアントサイドで商品登録のリクエストに対する処理
- (※各々適切な処理を書いてください)
- 第2世代での記述になることも気をつけてください
-
firebase-functions/v2/https
からインポート
-
index.ts
import { onCall, CallableRequest } from "firebase-functions/v2/https";
import { registerItem } from "./helper/registerNewItem";
// データベースに商品を登録
exports.registerNewItem = onCall(async (request: CallableRequest) => {
return await registerItem(request);
});
スケジューラの実装
- 処理内容
- 日本時間00:00に毎日自動で商品情報の更新が行われる
- (※各々適切な処理を書いてください)
- 第2世代での記述になることも気をつけてください
-
firebase-functions/v2/scheduler
からインポート
-
index.ts
import { onSchedule } from "firebase-functions/v2/scheduler";
import { updateAllItems } from "./helper/updateAllItem";
// 商品情報の更新(毎日日本時間00:00に自動で実行される)
exports.runScheduledJobs = onSchedule(
{
schedule: "every day 00:00",
timeZone: "Asia/Tokyo",
},
async () => {
await updateAllItems();
}
);
あとがき
CloudFunctionsは第1世代と第2世代で記述方法が異なることに戸惑いました。また、使用するべき関数がわかりにくかったので参考になればなによりです。