根据官方文档,很有可能设置一个云函数,该云函数将在数据存储区中的更改时被调用(添加了新文档等)。但是,除非我缺少某些功能,否则似乎为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
-根本没有调用记录。我可能缺少有关数据存储区资源规范的信息,或者未实现触发器。
答案 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