首页 > 解决方案 > 使用 Flutter 和 Firebase rtDB 执行查询服务器端

问题描述

我在 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 中下载后过滤它们。这种方法的问题是有很多项目并下载它们:

那么有没有办法可以在服务器端执行过滤操作而不是在设备上颤动?如果这不可能或使用 Firestore 做得更好,我可以使用 Firestore,但我更喜欢实时数据库。

标签: firebasefirebase-realtime-databaseflutter

解决方案


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

在颤振中:

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

推荐阅读