firebase - 使用 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 中下载后过滤它们。这种方法的问题是有很多项目并下载它们:
- 需要时间
- 用户正在使用的设备上的权重。
- 目前将达到firebase免费帐户下载限制(1GB)
那么有没有办法可以在服务器端执行过滤操作而不是在设备上颤动?如果这不可能或使用 Firestore 做得更好,我可以使用 Firestore,但我更喜欢实时数据库。
解决方案
如果您要查找 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);
});
推荐阅读
- ios - Swift - SKCameraNode 在缩放和移动时抖动
- webstorm - 在没有 UI 的情况下快速重构所有变量
- javascript - 如何从 CRUD 应用程序中编辑和删除单个项目
- html - 所有屏幕尺寸的响应式 iFrame 高度
- intellij-idea - 使用 JetBrains IntelliJ IDEA 或其他工具的多语言项目
- c# - 尝试调用过程并传递参数获取错误
- jquery - 数据表布局问题 - 按钮和下拉菜单
- python - 将 json 导入 Postgres 时出现编码问题
- r - 使用 r 中的参数模型预测跟进时间
- typescript - 在 WebStorm 2018.2.5 中看不到 TypeScript 工具栏