我正在尝试使用 Firebase 创建排行榜并显示用户名、高分、地区。

bra*_*ray 2 ios firebase swift firebase-realtime-database

我的目标是使用 Firebase 创建排行榜并在 tableview 中显示用户名、高分和区域。我当前的数据库看起来像这样在此处输入图片说明

目前我拥有所有用户。我这样做是为了增加当前用户的数据。不幸的是,通过这样做,我不认为我可以让别人看到别人的高分或用户名。是否有使用当前节点设置解决此问题的方法,或者我是否需要更改它。如果是这样,有人可以举出我的数据库外观示例。

Dur*_*ian 7

您应该将您的用户特定数据与排行榜分开。

你有你的用户节点,你的用户的数据在他们唯一的用户 ID 下。然后您还可以创建一个排行榜节点,并在相同的唯一用户 ID 下创建您的排行榜特定数据。这样您就不必为了了解用户特定数据而一次获取所有数据。

连接是用户 ID,即唯一 ID,您的用户将通过该 ID 了解并检索他/她的数据。其他玩家可以通过查询检索排行榜节点。您还应该存储一些看似冗余的数据,例如用户节点和排行榜都需要的用户名。

不要忘记应用安全规则,因此用户只能写入他/她的数据。

看起来像这样:

在此处输入图片说明

知道他/她的 UID 的经过身份验证的用户然后可以通过获取此路径上的数据来收听他/她自己的排行榜分数:“排行榜/UID”对。

其他玩家应该只需要使用路径:“排行榜”来获取排行榜上的每个玩家。要订购它们并仅获取前 10 名玩家,您必须使用查询。

使用 queryOrderedByChild 按高分对您的数据进行排序为此,您还应该添加安全规则:".indexOn": "highscore"。

要获取前 10 名玩家,请使用 queryLimitedToFirst 将其设置为 10,它只会下载前 10 名玩家。

您应该阅读有关查询的更多信息:https : //firebase.google.com/docs/database/ios/lists-of-data#sorting_and_filtering_data