我在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更好地做到这一点,则可以使用Firestore,但我希望使用实时数据库。
答案 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);
});