【问题标题】:Firebase Realtime Database stream onchildchangedFirebase 实时数据库流 onchildchanged
【发布时间】:2021-12-03 13:44:55
【问题描述】:

我试图在颤振中使用 onchildchanged 流事件获取更改的数据,但问题是它正在获取该节点下未更改的每个数据。

我的数据库:

如果我是流房间节点,并尝试更改房间名称,流正在获取房间节点下的所有数据,在这种情况下我只想要更改的节点数据,即房间名称。

颤振代码:

Query _userdIdQuery = FirebaseDatabase.instance.reference().child("users").child(FirebaseAuthData.auth.currentUser!.uid).child("rooms").orderByKey();
userIdDataAddSubscription = _userdIdQuery.onChildChanged().listen((event){
      print(event.snapshot.value);
    });

我可以在模态类中将数据与我的本地数据进行比较,但我想要一种高效/更少数据消耗的方法,以避免获得不变的数据。 有什么办法可以解决吗?

编辑:经过一番研究,我发现流节点下的所有数据都会在数据更改时收到,所以我认为没有其他方法可以只获取更改的数据。 目前,我正在考虑流式传输多个节点,流式传输多个节点会影响应用性能和网络使用吗?

【问题讨论】:

    标签: firebase flutter firebase-realtime-database


    【解决方案1】:

    您看到的是预期的行为。当您在/users/$uid/rooms 上订阅onChanged 时,只要房间发生变化,您就会收到呼叫,并且您将获得整个房间的快照。

    服务器向客户端发送的数据可能少于整个节点,但 SDK 将始终使用房间的完整快照调用您的代码。如果您想确切了解房间内发生了什么变化,您必须将之前的数据与应用程序代码中的新快照进行比较。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-05
      • 2021-07-01
      • 1970-01-01
      • 2019-07-28
      • 1970-01-01
      相关资源
      最近更新 更多