我需要一种解决方案,根据关键字进行Firebase数据库API调用以获取多个项目的数据(子元素),并将这些关键字(在一个响应中)的数据返回。
由于我不需要实时数据,因此某种标准的REST调用一次(而不是Firebase数据库监听器),我认为这会是理想的。
应用程序不会再有另一个监听器和WebSocket连接打开。然而,我查看了Firebase的API文档,好像没有办法做到这一点。
我看到的大多数答案都建议使用某种组合键/索引,并使用组合键进行相应的过滤,但这只适用于搜索范围。或者他们建议仅嵌套数据而不必担心冗余和磁盘空间(并且更快),而不是通过外键检索相关数据。
然而,问题是我正在使用Geofire及其查询方法仅返回条目的键,而不是条目的数据。所有的文档和以前的答案都建议使用实时SDK检索数据,我已经尝试使用once方法,或者对所有项目进行REST调用,并使用orderBy
、startAt
、endAt
参数进行过滤,并通过所需的键本地过滤。
这可能有效,但是检索我不需要的大量项目仅进行本地过滤似乎很浪费。使用once
监听器的方法也很浪费,因为它对于每个项键都会有一个服务器往返。这种方法在这篇非常好的帖子中有点解释,但根据这个解释,它仍然为每个项(即使是异步和通过相同的连接)做了一个往返。
这个可怜的人问了一个类似的问题,但没有得到太多有帮助的回复(真正解决制作n
个服务器请求的成本的答案)。
是否有人能一劳永逸地解释如何实现这个功能以及各种方法的优缺点?谢谢。