在Datastore模式下,Firestore的事件触发器--种类是否以某种方式转化为集合名称?

问题描述 投票:0回答:1

根据官方文档,可以设置一个云函数,当数据存储发生变化时(添加新文档等),该函数将被调用。然而,看起来这个功能是为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 - 根本就没有调用记录。要么是我遗漏了关于数据存储的资源规范,要么是没有实现触发器。

firebase go google-cloud-firestore google-cloud-datastore
1个回答
1
投票

我知道你在Datastore模式下为Firestore文档创建的云函数并没有像预期的那样被触发。

这的确是预期的行为,正如公共文档[1]的 "限制和保证 "部分所提到的,Firestore的云函数触发器仅在本地模式下可用。

因此,您只能使用 Cloud Functions 来监控 Firestore 本机文档的变化。要使用该功能,您需要在本地模式下创建一个新的Firestore项目[2]。

[1] https:/cloud.google.comfunctionsdocscallingcloud-firestore#limitations_and_guarantees。

[2] https:/cloud.google.comdatastoredocsfirestore或datastore#choosing_a_database_mode。

© www.soinside.com 2019 - 2024. All rights reserved.