我想获得前10名用户的最高游戏分数并将其显示在表格视图中。
leaderboards
CQVudhI2OjTfNbqWOWi2T1DTWKw2
HIGH-SCORE: 23
PLAYER-NAME: Russell
REACTION-TIME: .9
SWIPES: 12
F9IbjpVSE8g5YN3PX0sdhSNGULJ3
HIGH-SCORE: 29
PLAYER-NAME: Clayton
REACTION-TIME: .87
SWIPES: 22
HDIHCUSJDHCJHZKSHJXH
HIGH-SCORE: 89
PLAYER-NAME: Damien
REACTION-TIME: .77
SWIPES: 32
jdhsjdbwkjsdkahnkdnk232j3j2
HIGH-SCORE: 43
PLAYER-NAME: Christopher
REACTION-TIME: .99
SWIPES: 32
在表格视图中,我希望显示10个最高得分手的姓名和得分。
任何帮助,将不胜感激。谢谢
Firebase不提供任何通过查询来逆转排序顺序的方法。但是,如果您将分数存储为负值,那么超级简单。
这是一个结构
scores
score_0
amt: -20
score_1
amt: -10
score_2
amt: -12
score_3
amt: -1
score_4
amt: -22
然后读取前三个“最高”分数22的代码,然后是20和12
let scoresRef = self.ref.child("scores")
let queryRef = scoresRef.queryOrdered(byChild: "amt").queryLimited(toFirst: 3)
queryRef.observeSingleEvent(of: .value, with: { snapshot in
for child in snapshot.children {
let snap = child as! DataSnapshot
print(snap.value)
}
})
和输出
Optional({
amt = "-22";
})
Optional({
amt = "-20";
})
Optional({
amt = "-12";
})
当然,如果分数数量有限,也可以将它们读入数组并进行排序。
为了完整起见,如果您不想将分数存储为负值,请按以下步骤操作。
let scoresRef = self.ref.child("scores")
let queryRef = scoresRef.queryOrdered(byChild: "amt").queryLimited(toLast: 3)
queryRef.observeSingleEvent(of: .value, with: { snapshot in
var scoresArray = [Int]()
for child in snapshot.children {
let snap = child as! DataSnapshot
let score = snap.childSnapshot(forPath: "amt")
scoresArray.append(score.value as! Int)
}
scoresArray = scoresArray.reversed()
print(scoresArray)
})
上面的代码通过queryLimited(toLast)读取三个最高值,分别是12、20和22,并填充了一个数组。该数组可以反转,对22、20和12进行降序排序。
最后一个选择是将它们读为12、22、20,但将每个amt插入位置0的数组中。因此12将位于索引0,然后22将位于索引0,12将位于索引1,依此类推。
我想获取日期字段,但下面的代码没有这样做。Toast显示null(字符串日期的值)。 公共字符串日期;
我想在Android Studio中获取isSeen节点的值。M6F2mJjQ8uGPXAynZzV是消息的id,并将消息更改为消息。我想在适配器类中获得这个值。
我真的很难从数据库中收集数据。我正在使用实时数据库,我正在将这些值添加到一个可以单击的列表中。 当我单击列表上的用户时,我需要获取用户名值来创建聊天ID。这是我的问题,以获得键内的值。我现在的做法似乎行不通。 这是我的数据库 我需要取给“name”的值。 这是我的密码
我在两个不同的地方创建了两个项目。比如美国中部和亚洲东北部。现在,对于这两个不同的项目,我想在各自的区域部署云功能。 我如何在环境变量或process.env中获取项目区域值,以便我可以使用它在云函数中设置该区域。
我一直无法从Firebase中获取显示名称。下面是注册过程编码 控制台.log显示“用户名集!”,控制台.log(firebaseUser)显示显示名称是在当前用户的数据库中设置的,并且名称是我期望的。然而 给出null,并且 这也返回为null。 我一直在寻找获取firebase数据集数据的方法,但我无法做到这一点。 如果有人能给我一些建议,那就太好了。 非常感谢。
问题内容: 这是Firebase的后续问题-构建数据库的正确方法 我具有以下数据库结构: 我想查询歌手参考,看看歌手是否已在数据库中,以及歌手是否在数据库中,请获取歌手键(在上面的示例中为 -KKMkpA22PeoHtBAPyKm )。 我尝试了这个: 但是“ snapshot.key”只给了我“艺术家”的父密钥。 如何获得所需的钥匙? 问题答案: 在if条件下,您需要获取allKeys才能获取“