javascript - 无法读取 Firebase Cloud Function 中未定义的属性“ref”
问题描述
Cloud Function 数据生成后,尝试在 Firebase Cloud Function 中运行该函数。实际上,我想通过添加集合的数据来sendEmail
触发运行。但是这些事件发生了好几次而不是一次。events
所以我试图添加publish
字段,结果是true
在事件发生之后。但是会出现以下错误。
TypeError:无法读取未定义的属性'ref'
exports.sendEmail = functions.firestore
.document("events/{eventId}")
.onCreate((snap, context) => {
if (!published) {
const { published } = snap.data();
// send an email
}
return snap.after.ref.set(
{
published: true,
},
{ merge: true }
);
}
解决方案
onCreate 触发器接收DocumentSnapshot对象作为第一个参数,其中包含刚刚创建的文档的内容。它没有一个名为after
. 所以你不能说snap.after.ref
,因为snap.after
是未定义的。这就是您收到错误消息的原因。
您可能会将 onCreate 与 onUpdate 和 onWrite 混淆,它们都接收一个具有before
和after
属性的 Change 对象。
我并不完全清楚你究竟想在这里完成什么,但一个 onCreate 触发器不应该重复执行,除非它产生错误并启用重试。
推荐阅读
- c# - 通过 ASP.Net 和 C# 在 MS Access 中将图像作为 OLE 对象输入,以便可以从 Access 中打开
- pytorch - 如何将 pytorch 闪电分析器与 tensorboard 集成?
- flutter - 谁能告诉我如何解决这个问题,因为我已经尝试了所有现有的解决方案
- javascript - 服务器向多个客户端发送事件 - 仅向每个客户端发送相关事件
- sql - 使用反映表值的列名创建 SQL 结果集
- docker - 构建Docker镜像时--no-cache和--rm有什么区别
- outlook - 通过 EWS 在委托日历上创建的事件对委托用户不可见
- azure - 使用 API 通过 Azure 数据工厂刷新 PowerBI
- javascript - 为什么当我 console.log 这个函数时我一直不确定
- yaml - 如何在 Lquid 或 Javascript 中循环遍历 YAML 集合和 110 中的子集合?