数据存储区模式下Firestore的事件触发器-种类是否以某种方式转换为集合名称?

时间:2020-06-05 22:33:18

标签: firebase go google-cloud-firestore google-cloud-datastore

根据官方文档,很有可能设置一个云函数,该云函数将在数据存储区中的更改时被调用(添加了新文档等)。但是,除非我缺少某些功能,否则似乎为Firestore模式定义了此功能。

对于初学者来说,我创建了一个简单的Go函数,旨在将事件对象打印到日志中:

package dblog

import (
    "context"
    "fmt"

    "cloud.google.com/go/functions/metadata"
)

func DbWatch(ctx context.Context, e map[string]interface{}) error {
    meta, err := metadata.FromContext(ctx)
    if err != nil {
        return fmt.Errorf("metadata.FromContext: %v", err)
    }
    fmt.Printf("%#+v\n%#+v", *meta, e)
    return nil
}

我用

部署了它
gcloud functions deploy dbwatch --entry-point DbWatch --trigger-event providers/cloud.firestore/eventTypes/document.create --trigger-resource "projects/MYPROJECTIDHERE/databases/(default)/documents/trigger/{triggerid}" --runtime go111 --memory 128MB

到目前为止,该函数已经存在,但是如果我创建的文件类型为trigger-根本没有调用记录。我可能缺少有关数据存储区资源规范的信息,或者未实现触发器。

1 个答案:

答案 0 :(得分:1)

我了解到您未在数据存储模式下为Firestore文档创建的Cloud Function触发。

这确实是预期的行为,如公共文档[1]的“限制和保证”部分所述,Firestore的Cloud Functions触发器仅在纯模式下可用。

因此,您可以使用Cloud Functions仅监视Firestore本机文档中的更改。要使用此功能,您将需要在纯模式下使用Firestore创建一个新项目[2]。

[1] https://cloud.google.com/functions/docs/calling/cloud-firestore#limitations_and_guarantees

[2] https://cloud.google.com/datastore/docs/firestore-or-datastore#choosing_a_database_mode