【问题标题】:Firebase Admin SDK Event Listener not triggeredFirebase Admin SDK 事件侦听器未触发
【发布时间】:2021-11-03 15:37:09
【问题描述】:

我正在使用 Go Firebase Admin SDK 并监听实时数据库中的变化。 问题是如果我从 Firebase 控制台手动更新数据,监听器会被触发,如果我从另一个应用程序(在本例中为 Flutter)更改数据,监听器是 NOT strong> 即使在 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")
    }
}

监听器是通过更新控制台数据触发的,说明监听器工作正常。

附: Listen-Method 尚未集成到 Go Firebase Admin SDK 中,来自https://github.com/firebase/firebase-admin-go/issues/229

【问题讨论】:

    标签: firebase flutter go firebase-realtime-database


    【解决方案1】:

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

    这是我用来执行更新的:

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

    解决问题的方法是通过以下方式使用“设置”而不是“更新”:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-19
      • 1970-01-01
      • 2020-09-06
      • 2021-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-18
      相关资源
      最近更新 更多