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

使用Cloud Functions第二代时如何判断Firestore事件类型?

如何在Cloud Functions v2的onDocumentWritten中判断事件类型

在Cloud Functions第二代的onDocumentWritten触发器中,可通过对比事件里的before和after文档快照,区分创建、更新、删除三种事件,具体判断逻辑如下:

  • 创建事件:文档原本不存在,触发后新增。此时event.data.before.exists === false,event.data.after.exists === true
  • 删除事件:文档原本存在,触发后被移除。此时event.data.before.exists === true,event.data.after.exists === false
  • 更新事件:文档原本存在,触发后内容被修改。此时event.data.before和event.data.after都存在,且两者数据存在差异

以下是适配该逻辑的代码示例:

import {
  onDocumentWritten,
  Change,
  FirestoreEvent
} from "firebase-functions/v2/firestore";

exports.myfunction = onDocumentWritten("users/{userId}", (event) => {
  const beforeDoc = event.data.before;
  const afterDoc = event.data.after;

  if (!beforeDoc.exists && afterDoc.exists) {
    console.log("触发创建事件", afterDoc.data());
  } else if (beforeDoc.exists && !afterDoc.exists) {
    console.log("触发删除事件", beforeDoc.data());
  } else if (beforeDoc.exists && afterDoc.exists) {
    // 可选:排除仅元数据更新的情况(如文档修改时间变化但内容未改)
    const beforeData = beforeDoc.data();
    const afterData = afterDoc.data();
    if (JSON.stringify(beforeData) !== JSON.stringify(afterData)) {
      console.log("触发更新事件", { before: beforeData, after: afterData });
    } else {
      console.log("仅元数据更新,无内容变化");
    }
  }
});

内容的提问来源于stack exchange,提问作者Always Learner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:23:17