java - 在 Android Studio 中使用复杂查询从 Firebase 数据库获取节点
问题描述
我需要创建过滤器,因此我可以获取所有节点,即成本在 100 美元到 400 美元之间,距离我当前位置不超过 60 英里,并且其 startDate 不在今天之前的节点。或者这些过滤器的任何类型的组合(成本从、成本到、距离、开始日期从、开始日期到)。
是否有任何有效的方法来存储这些数据,以便所有过滤都可以在服务器端进行?
我知道我可以制作一个.orderByChild( "cost" ).startAt(100).endAt(400)
,然后datasnapshot
在客户端迭代,但我认为当数据库增长时它并不优雅或高效。
想象一下,引入数百万个节点只是为了显示满足所有过滤器的 3 或 4 个节点。
我一直在做很多研究(相信我),但我仍然很难抓住它的味道。我是在 SQL shell 中长大的,那些查询曾经是我的 ABC,我只是无法忍受事情变得如此丑陋的想法,但一定是我。
任何对这些 NO-SQL 数据库有更多经验的人都可以在这里帮我一把吗?它必须是 Firebase 实时数据库,而不是 Cloud Firestore。
解决方案
我认为在实时数据库中,您无法通过简单的查询在服务器端执行此操作。我知道使用 dataSnapshot 您将获取所有数据并选择您想要的,但正如您所说,如果数百万个节点......它变得非常困难。我认为您应该将 SQL 用于此类应用程序。这是我的意见,我正在等待这篇文章的其他答案:D
对不起答案,但我不能评论;(
推荐阅读
- c - 在编译时避免变长堆栈数组
- uml - 在 UML 中,组合是否意味着关联类?
- bash - 使用 sed 命令时未知命令 '<'
- vb.net - 使用 process.start 在 vb.net 中调用 .exe 未显示 Windows 通知
- extjs - 无法在 ext js 6.7 中创建控制器的对象
- image - 如何在本机反应中基于数组内的图像uri渲染图像组件
- plc - TwinCAT3:在隔离内核上运行失败
- oracle - oracle 12c 中的 IMP 不会创建具有 IDENTITY 功能的表
- javascript - 如何在单击输入框而不是图标或箭头时打开 Datepicker 对话框
- flutter - 如何实现一个拱形appBar