Firebase 触发器

17 Mar 2025 | 5 分钟阅读

我们编写的 Functions 可以响应由 FirebaseGoogle Cloud 功能(称为 触发器)生成的事件。在开发我们的第一个 Cloud Function 之前,我们将探讨可用于 Cloud Function 的最常见触发器。以下是触发器

Firebase Triggers

Cloud Firestore 触发器

Firebase SDK 的 Cloud Functions 导出了一个 function.firestore 对象,它允许我们创建与特定 Cloud Firestore 事件相关联的处理程序。需要注意的一点是,Cloud Firestore 事件仅在文档更改时触发。无法将事件添加到特定字段。

序号事件类型诱因
1.onCreate首次写入文档时触发。
2.onUpdate当文档已存在并且有任何值更改时触发。
3.onDelete删除带有数据的文档时触发。
4.onWrite当触发 onCreate、onDelete 或 onUpdate 时触发。

Realtime Database 触发器

通过使用 Realtime Database 触发器,我们可以响应 Firebase Realtime Database 中的更改。为此,我们必须在特定的数据库路径 function.database.ref ('/foo/bar') 上注册事件。我们要注册的数据库路径将作为参数传递。

使用大括号,也可以将路径的这一部分定义为通配符。


序号事件类型诱因
1.onWrite()创建、更改或销毁数据时激活。
2.onCreate()创建新数据时激活。
3.onUpdate()更新数据时激活。
4.onDelete()删除数据时激活。

身份验证触发器

通过使用身份验证触发器,我们可以执行代码以响应通过 Firebase 身份验证创建和删除用户帐户。 exports.newUserCreated = functions.auth.user().onCreate(event => { ... }) 用于创建一个事件处理程序函数,如果创建了新用户,则执行该函数。

在以下情况下调用身份验证触发器

  1. 当用户创建电子邮件帐户和密码时。
  2. 当用户借助联合身份提供程序首次登录时。
  3. 当开发人员使用 Firebase Admin SDK 创建帐户时。
  4. 当用户首次登录到新的匿名身份验证会话时。

如果用户使用自定义令牌首次登录,则不会触发 Cloud Functions 事件。

Cloud Storage 触发器

我们可以触发一个函数来响应 Cloud Storage 中文件和文件夹的更新、上传和删除。要注册事件处理程序函数,我们必须以以下方式使用 function.storage 对象

在上面的代码行中,我们正在为默认存储桶上的所有对象更改注册一个事件处理程序。如果我们要指定一个特定的存储桶,我们还必须添加对存储桶函数的调用

在事件处理程序函数中,我们可以使用各种存储属性

序号属性描述
1.event.data存储对象。
2.event.data.bucket包含文件的存储桶。
3.event.data.name存储桶中文件的路径。
4.event.data.contentType文件内容类型。
5.event.data.resourceState存在或 not_exists。如果文件/文件夹已被删除,则设置 not_exists 值。
6.event.data.metageneration文件元数据的生成次数,对于新对象,初始值为 1。

HTTP 触发器

HTTP 触发器可与 Firebase Cloud Function 一起使用。这些触发器通过 HTTP 请求调用,并通过以下方式使用 functions.https 注册

远程配置触发器

为了响应 Firebase 远程配置事件,我们可以触发一个函数,包括发布新的配置版本或回滚到旧版本。要触发远程配置函数,我们使用 onUpdate 处理程序,该处理程序由 function.remoteConfig 提供。

onUpdate 返回 TemplateVersion 对象,其中包含模板更新的关键元数据字段,例如更新的时间和版本号。如果可用,我们还可以使用图像和名称检索已进行更新的用户的电子邮件。

分析触发器

通过使用 Google Analytics for Firebase,我们可以详细了解用户如何与我们的 Android 应用程序和 iOS 应用程序进行交互。Analytics API 公开了各种事件。类型转换事件可用于注册云函数,如下所示

Crashlytics 触发器

为了响应 Crashlytics 问题事件,其中包括新问题、速度警报和回归问题,我们可以触发一个函数。

要触发 Crashlytics 函数,我们使用 functions.crashlytics.issue() 生成一个 IssueBuilder,然后,我们调用构建器的相应问题生成函数。

序号函数描述
1.onNew()当我们的应用程序首次遇到问题时触发。
exports.sendOnNewIssue = functions.crashlytics.issue().onNew(async (issue) => {
  // ...
});
2.onRegressed()当问题在 Crashlytics 中关闭后重新出现时触发。
exports.sendOnRegressedIssue = functions.crashlytics.issue().onRegressed(async (issue) => {
  // ...
});
3.onVelocityAlert()当给定版本中的统计上显着的会话数崩溃时触发。
exports.sendOnVelocityAlert = functions.crashlytics.issue().onVelocityAlert(async (issue) => {
  // ...
});

Pub/Sub 触发器

Google Cloud Pub/Sub 是一个全球分布的消息总线,可以根据需要自动扩展。我们可以通过使用 functions.pubsub 创建一个处理 Google Cloud Pub/Sub 事件的函数。

当将新的 Pub/Sub 消息发送到特定主题时,我们可以触发一个函数。我们必须指定 Pub/Sub 主题名称才能触发我们的函数,并在 onPublish() 事件处理程序中设置事件。

测试实验室触发器

我们可以触发一个函数来响应 Firebase Test Lab 中测试矩阵的完成。要创建一个在 TestMatrix 完成时触发的新函数,请使用事件处理程序 function.testLab.testMatrix().onComplete()