如何使用FireBaseDatabase.net实现“仅增值”侦听器

时间:2020-02-24 19:00:09

标签: c# firebase firebase-realtime-database

我尝试遵循有关如何设置实时流式处理代码的说明,该代码将处理对孩子所做的更改为described here

using Firebase.Database;
using Firebase.Database.Query;
using System.Reactive.Linq;
...
var firebase = new FirebaseClient("https://dinosaur-facts.firebaseio.com/");
var observable = firebase
  .Child("dinosaurs")
  .AsObservable<Dinosaur>()
  .Subscribe(d => Console.WriteLine(d.Key));

但是该代码似乎触发了对该子项所做的所有更改,并在每次触发时返回其所有子项。当我同步处理更改时,这将成为问题。因此,有没有办法使它成为高效的“仅增值”侦听器?

1 个答案:

答案 0 :(得分:1)

如果您在/dinosaurs上添加观察者,那么只要dinosaurs下发生任何事情,您都会得到/dinosaurs的整个JSON。即使大多数本地Firebase SDK实际上仅同步在线上已更改的内容,也无法仅获取更改。

如果要获取更多的粒度数据,请考虑存储该粒度数据。例如,如果您只想在客户端中处理增量,请考虑仅将增量存储在数据库的单独节点中。然后,当您仅收听该节点时,您将仅获得更新并可以处理这些更新。