为了账号安全,请及时绑定邮箱和手机立即绑定

未触发基于火库的 SDK 事件侦听器

未触发基于火库的 SDK 事件侦听器

Go
慕尼黑8549860 2022-09-26 20:17:59
我正在使用 Go Firebase 管理 SDK 并侦听实时数据库中的更改。问题在于,只有当我从 Firebase 控制台手动更新数据时,侦听器才会被触发,如果我从另一个应用程序(在本例中为 Flutter)更改数据,即使可以在 Firebase 控制台中看到更改,也不会触发侦听器(因此数据肯定已更改)。我甚至尝试通过 Firebase 数据库 REST API 执行更新 https://firebase.google.com/docs/reference/rest/database#section-streaming结果相同:数据更改可在控制台中查看,但仍不会触发侦听器。以下是我收听 Go 中更改的方式:func listenToFirebase(ref *db.Ref, ctx context.Context) {    iter, err := ref.Listen(ctx)    if err != nil {        fmt.Printf(" Error: failed to create Listener %v\n", err)        return    }    defer iter.Stop()    for {        if iter.Done() {            break        }        event, err := iter.Next()        if err != nil {            // Handle error here based on specific usecase            // We can continue Listening            log.Printf("%v\n", err)            continue        }        fmt.Printf("Listener | Ref Path: %s | event.Path %s | event.Snapshot() = %v\n", ref.Path, event.Path, event.Snapshot())        fmt.Printf("\n")    }}侦听器是通过从控制台更新数据触发的,则表明侦听器工作正常。附言:监听方法尚未集成到 Go Firebase 管理 SDK 中,并且来自 https://github.com/firebase/firebase-admin-go/issues/229
查看完整描述

1 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

事实证明,Go代码没有问题。问题在于我从Flutter更新实时数据库的方式。

这是我用来执行更新的内容:

await ref.update({"value": value});

解决问题的是使用以下方式使用“set”而不是“更新”:

await ref.child("value").set(value);

通过这种方式,我的Go-Listener方法最终被触发,一切都按预期工作。


查看完整回答
反对 回复 2022-09-26
  • 1 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号