如何抓取多条路径并对它们进行排序并将结果带回firebase?

Posted

技术标签:

【中文标题】如何抓取多条路径并对它们进行排序并将结果带回firebase?【英文标题】:How to grab multiple paths and sort them and bring back the result in firebase? 【发布时间】:2016-10-23 16:55:30 【问题描述】:

我试图了解如何获取 Id 列表,然后要求 Firebase 采用每条路径并按日期对它们进行排序,并在一次 Firebase 调用中将我带回前 20 名。目前,我通过遍历 id 并获取每个路径来执行此操作 - 将项目添加到列表中然后对它们进行排序。

然而,这是低效的,尤其是当列表变大时。

我的数据如下所示:

follows: 
  UserId :
    projId1: true,
    projId2: true
  


projects: 
  projId1 :
    title: SomeText,
    date: TimeStamp
  

【问题讨论】:

【参考方案1】:

Firebase 查询在一个特定位置运行,它只能对存在于该位置子级下的固定路径中的数据进行排序。无法对存在于不同路径的数据的 Firebase 查询进行排序。

因此,在您的情况下,如果您从 /follows/$uid 加载数据,则无法对来自 /projects 节点的数据进行排序。

这让你有两个选择:

    在客户端对数据进行排序

    follows子项的排序属性处

只要您的数据集不太大并且您没有过滤太多,在客户端对数据进行排序是一个有效的选项。

但要允许在服务器上进行排序,您必须在查询的节点下复制相关属性:

follows: 
  UserId :
    projId1: TimeStamp,
    projId2: TimeStamp
  


projects: 
  projId1 :
    title: SomeText,
    date: TimeStamp
  

使用这种结构,您可以在时间戳上订购然后项目

Query query = database.child(user.getUid()).orderByValue();
query.addChildEventListener(...

【讨论】:

感谢感谢

以上是关于如何抓取多条路径并对它们进行排序并将结果带回firebase?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 nginx 中指向代理服务器的多条路径

SQL SELECT MAX() 返回多条记录

将数组存储在向量中并对元素进行排序[关闭]

如何按创建日期对文件管理器数组进行排序

如何在java中对不同的数据类型进行排序并将它们打印在一个表中? (使用方法重载)

创建对象的列表/数组列表并对列表进行排序(Java)[重复]