使用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
相关产品推荐
相关产品推荐

