使用Flutter和Firebase rtDB执行查询ServerSide

时间:2019-01-04 13:56:49

标签: firebase firebase-realtime-database flutter

我在Firebase RealTime数据库中有一个对象列表,形状如下:

-Places: 
    -BO-1232
         -lat: 23.000
         -lng: 45.000
    -EN-12323
         -lat: 23.000
         -lng: 45.000
    -FR-2323
         -lat: 23.000
         -lng: 45.000

我需要查询名称中带有BO的所有项目以获取其lat和lng参数:因此,在这种情况下,我将仅获得第一个。 我这样做的方式是,我得到了所有Places子项,然后在Flutter中下载后对其进行了过滤。这种方法的问题在于有很多项目并需要下载:

  • 花时间
  • 用户正在使用的设备上的重量。
  • 当前将达到Firebase免费帐户下载限制(1GB)

有没有办法在服务器端而不是在设备上执行过滤操作? 如果无法使用Firestore或使用Firestore更好地做到这一点,则可以使用Firestore,但我希望使用实时数据库。

1 个答案:

答案 0 :(得分:0)

如果要查找ID以-BO开头的所有子节点,则可以使用Firebase查询按键排序,然后根据以-BO开头的项目进行过滤。

在Flutter中:

final ref = FirebaseDatabase.instance.reference().child("Places");
final query = ref.orderByKey().startAt("-BO").endAt("-BO\UF7FF");
query.onChildAdded.listen((event) {
  print(event.snapshot.key);
});