嘿伙计们,所以我想了解我如何获取ID列表,然后要求Firebase采用每条路径并按日期对它们进行排序,并在一次Firebase调用中将我的前20名带回来。目前我正在通过循环遍历id并抓住每条路径来执行此操作 - 将项目添加到列表中然后对其进行排序。
然而,这是低效的,特别是当列表变大时。
我的数据看起来像这样:
follows: {
UserId :{
projId1: true,
projId2: true
}
}
projects: {
projId1 :{
title: SomeText,
date: TimeStamp
}
}
答案 0 :(得分:4)
Firebase查询在一个特定位置运行,它只能对存在于该位置子项下的固定路径的数据进行排序。无法对存在于不同路径的数据对Firebase查询进行排序。
因此,在您的情况下,如果您要从Console.WriteLine(string.Join(",", numbers.Where(i => i % 2 == 0)));
加载数据,则无法对来自/follows/$uid
节点的数据进行排序。
这给你留下了两个选择:
对客户端上的数据进行排序
在/projects
孩子的排序属性
只要您的数据集不是太大并且您没有过多过滤,客户端上的数据排序就是一个有效的选项。
但是要允许在服务器上进行排序,您必须复制查询节点下的相关属性:
follows
使用此结构,您可以使用
在时间戳上订购项目follows: {
UserId :{
projId1: TimeStamp,
projId2: TimeStamp
}
}
projects: {
projId1 :{
title: SomeText,
date: TimeStamp
}
}