我的目标是使用 Firebase 创建排行榜并在表格 View 中显示用户名、高分和地区。我当前的数据库看起来像这样
我现在拥有用户下的所有内容。我这样做是为了增加当前用户的数据。不幸的是,通过这样做,我不认为我可以让别人看到别人的高分或用户名。 使用当前节点设置是否有解决此问题的方法,或者我是否需要更改它。如果可以,有人可以举例说明数据库的外观。
最佳答案
您应该将您的用户特定数据与排行榜分开。
您有您的用户节点,其中您的用户数据位于其唯一用户 ID 下。 然后您还可以创建一个排行榜节点,并在相同的唯一用户 ID 下创建您的排行榜特定数据。这样您就不必一次获取所有数据来了解用户特定数据。
连接是用户 ID,即唯一 ID,您的用户将知道该 ID,并通过该 ID 检索他/她的数据。其他玩家可以通过查询来检索排行榜节点。您还应该存储一些看似冗余的数据,例如用户节点和排行榜都需要的用户名。
不要忘记应用安全规则,因此用户只能写入他/她的数据。
看起来像这样:
知道他/她的 UID 的经过身份验证的用户然后可以通过以下路径获取数据来收听他/她自己的排行榜分数:“leaderboards/UID”对。
其他玩家应该只需要使用路径:“leaderboards”来获取排行榜上的每个玩家。要对它们进行排序并仅获取前 10 名玩家,您必须使用查询。
使用 queryOrderedByChild 按高分排序数据 为此,您还应该添加安全规则:“.indexOn”:“highscore”。
要获取前 10 名玩家,请使用 queryLimitedToFirst 将其设置为 10,它将只下载前 10 名玩家。
您应该阅读有关查询的更多信息:https://firebase.google.com/docs/database/ios/lists-of-data#sorting_and_filtering_data
关于ios - 我正在尝试使用 Firebase 创建排行榜并显示用户名、高分、地区。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40228786/