You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Firebase Cloud Functions Gen2实现Firestore数据库触发器?

在Cloud Functions Gen2中实现Firestore的onCreate、onUpdate触发器

Cloud Functions Gen2采用全新API结构定义Firestore触发器,以下是具体实现方案:

依赖准备

确保项目安装最新版依赖包:

npm install firebase-functions@latest firebase-admin@latest

实现onCreate触发器

监听指定集合的文档创建事件,新文档添加时触发函数:

import { onDocumentCreated } from "firebase-functions/v2/firestore";
import { initializeApp } from "firebase-admin/app";

// 初始化Admin SDK
initializeApp();

export const userCreatedTrigger = onDocumentCreated("users/{userId}", (event) => {
  // 获取文档ID与创建数据
  const userId = event.params.userId;
  const userData = event.data.data();

  // 执行自定义业务逻辑,如日志记录、数据同步
  console.log(`新用户创建完成:ID ${userId},数据:`, userData);

  // 异步操作需返回Promise
  return Promise.resolve();
});

实现onUpdate触发器

监听指定集合的文档更新事件,可对比更新前后的数据差异:

import { onDocumentUpdated } from "firebase-functions/v2/firestore";
import { initializeApp } from "firebase-admin/app";

initializeApp();

export const userUpdatedTrigger = onDocumentUpdated("users/{userId}", (event) => {
  // 获取更新前后的文档数据
  const oldUserData = event.data.before.data();
  const newUserData = event.data.after.data();
  const userId = event.params.userId;

  // 示例:检测邮箱字段变更
  if (oldUserData?.email !== newUserData?.email) {
    console.log(`用户${userId}邮箱更新:旧邮箱${oldUserData.email} → 新邮箱${newUserData.email}`);
  }

  return Promise.resolve();
});

关键注意事项

  • 权限配置:确保函数服务账号拥有Firestore必要权限(如datastore.objects.get、datastore.objects.update),可通过Google Cloud IAM控制台配置。
  • 事件结构差异:Gen2事件参数与Gen1不同,文档数据通过event.data获取,更新场景下前后数据对应event.data.before和event.data.after。
  • 部署命令:使用常规命令发布函数:
firebase deploy --only functions

内容的提问来源于stack exchange,提问作者Mohanish Saim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 12:05:22