📅  最后修改于: 2021-01-02 03:51:41             🧑  作者: Mango
我们编写的功能可以响应Firebase和称为触发器的Google Cloud功能生成的事件。在开发第一个Cloud Function之前,我们将探索可用于Cloud Function的最常见触发器。有以下触发器:
用于Firebase SDK的Cloud Functions导出函数.firestore对象,该对象使我们能够创建与特定Cloud Firestore事件绑定的处理程序。需要注意的一件事是,Cloud Firestore事件将仅在文档更改时触发。无法将事件添加到特定字段。
S.No | Event Type | Trigger |
---|---|---|
1. | onCreate | It is triggered when a document is written for the first time. |
2. | onUpdate | It is triggered when a document already exists and has any value changed. |
3. | onDelete | It is triggered when a document is deleted with the data. |
4. | onWrite | It is triggered when onCreate, onDelete, or onUpdate is triggered. |
通过使用实时数据库触发器,我们可以响应Firebase实时数据库中的更改。为此,我们必须在特定的数据库路径函数.database.ref('/ foo / bar')上注册事件。我们要注册的数据库路径作为参数传递。
使用花括号,也可以将路径的这部分定义为通配符。
functions.database.ref('/profiles/{userID}')
S.No | Event Type | Trigger |
---|---|---|
1. | onWrite() | It is activated when the data is created, changed, or destroyed. |
2. | onCreate() | It is activated when new data is created. |
3. | onUpdate() | It is activated when data is updated. |
4. | onDelete() | It is activated when data is deleted. |
通过使用身份验证触发器,我们可以通过Firebase身份验证执行代码,以响应用户帐户的创建和删除。 Exports.newUserCreated = functions.auth.user()。onCreate(event => {…})用于创建事件处理函数,如果创建了新用户,该函数将执行。
在以下情况下,将调用身份验证触发器:
如果用户首次使用自定义令牌登录,则不会触发Cloud Functions事件。
我们可以触发函数来响应Cloud Storage中文件和文件夹的更新,上传和删除。要注册事件处理程序函数,我们必须通过以下方式使用函数.storage对象:
exports.storageChanges = functions.storage.object().onChange(event => {...});
在上面的代码行中,我们正在为默认存储桶上的所有对象更改注册事件处理程序。如果要指定特定的存储桶,则还必须添加对桶函数的调用:
exports.storageChanges = functions.storage.bucket('bucketName').object().onChange(event => {...});
在事件处理函数,我们可以利用各种存储属性:
S.No | Attribute | Description |
---|---|---|
1. | event.data | The storage object. |
2. | event.data.bucket | The storage bucket that contains the file. |
3. | event.data.name | The path of the file in the bucket. |
4. | event.data.contentType | The file content type. |
5. | event.data.resourceState | Either exist or not_exists. The not_exists value is set if the file/folder has been deleted. |
6. | event.data.metageneration | It is the no. of times the metadata of the file has been generated, and for new objects, the initial value is 1. |
HTTP触发器可与Firebase Cloud Function一起使用。这些触发器是通过HTTP请求调用的,并通过以下方式使用functions.https注册的:
exports.httpTest = functions.https.onRequest((req, res) => {...});
为了响应Firebase远程配置事件,我们可以触发一个函数,包括发布新的配置版本或回滚到旧版本。为了触发Remote Config函数,我们使用onUpdate处理程序,该函数由.remoteConfig函数提供。
onUpdate返回TemplateVersion对象,该对象包含模板更新的关键元数据字段,例如更新的时间和版本号。我们还可以检索进行更新的用户的电子邮件,其中包含图像和名称(如果有)。
通过使用Firebase的Google Analytics(分析),我们可以详细了解用户如何与我们的Android应用和iOS应用进行交互。 Analytics API公开了各种事件。类型转换事件可用于注册云功能,如下所示:
exports.onPurchase = functions.analytics.event('in_app_purchase').onLog(event => {...});
为了响应Crashlytics问题事件(包括新问题,速度警报和退化问题),我们可以触发函数。
为了触发Crashlytics函数,我们使用function.crashlytics.issue()生成一个IssueBuilder ,然后,我们调用构建器的相应问题生成函数。
S.No | Function | Description |
---|---|---|
1. | onNew() | This is triggered when our app experiences an issue for the first time.
exports.sendOnNewIssue = functions.crashlytics.issue().onNew(async (issue) => { // ... }); |
2. | onRegressed() | It is triggered when an issue reoccurs after it is closed in Crashlytics.
exports.sendOnRegressedIssue = functions.crashlytics.issue().onRegressed(async (issue) => { // ... }); |
3. | onVelocityAlert() | It is triggered when a statistically significant number of sessions in a given build crash.
exports.sendOnVelocityAlert = functions.crashlytics.issue().onVelocityAlert(async (issue) => { // ... }); |
Google Cloud Pub / Sub是全球分布的消息总线,可根据需要自动缩放。我们可以使用函数创建一个处理Google Cloud Pub / Sub事件的函数。
当新的发布/订阅消息发送到特定主题时,我们可以触发函数。我们必须指定用于触发函数的发布/订阅主题名称,并在onPublish()事件处理程序中设置事件。
exports.helloPubSub = functions.pubsub.topic('topic-name').onPublish((message) => {
// ...
});
我们可以响应Firebase Test Lab中测试矩阵的完成而触发函数。为了创建一个新的函数,该函数在事件处理函数.testLab.testMatrix()。onComplete()完成时触发TestMatrix:
exports.sendEmailNotification = functions.testLab.testMatrix().onComplete((testMatrix) => {
// ...
});