登录
首页 >  Golang >  Go问答

Firestore 数据存储模式下,触发事件是否会将 kind 转换为集合名称?

来源:stackoverflow

时间:2024-03-05 13:51:26 213浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《Firestore 数据存储模式下,触发事件是否会将 kind 转换为集合名称?》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

根据官方文档,很可能设置一个云函数,该函数将在数据存储中发生更改(添加新文档等)时调用。不过,看起来这个功能是为 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 的文档 - 根本没有调用记录。要么我缺少有关数据存储资源规范的信息,要么触发器未实现。


解决方案


我了解您在数据存储模式下为 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

以上就是《Firestore 数据存储模式下,触发事件是否会将 kind 转换为集合名称?》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>