Android Studio Firestore数据结构

fcy6dtqo  于 2023-01-05  发布在  Android
关注(0)|答案(2)|浏览(109)

我建立一个应用程序与安卓studio-java,firestore和firebase认证。我需要帮助如何保存数据。
该应用程序有3个游戏,目标是保存用户。分数+日期(日/月/年为每个分数),和高分为每个游戏。我需要保存最后5个分数为每个游戏。我的第一次尝试是这样做的1收集称为"用户"。
用户类别:

private String name;
private String email;
private HashMap<Integer, Date> game1_Scores;
private HashMap<Integer, Date> game2_Scores;
private HashMap<Integer, Date> game3_Scores;
private int game1_HighScore;
private int game2_HighScore;
private int game3_HighScore;

我的问题:
1.用新分数覆盖最旧分数的最佳方法是什么?
1.我想能够显示在应用程序的高分列表,从高到低的所有用户。我该怎么做?
1.我应该做一个"分数"收集。我如何连接分数到用户?
任何帮助都将不胜感激。
编辑:我的数据库截图

p.s.添加新用户文档时如何控制字段顺序。

nukf8bse

nukf8bse1#

我建议您按如下方式对其进行建模:

private String name;
private String email;
// If the number of games grows too much, new modeling will be necessary.
private List<GameScore> game1Scores;
private List<GameScore> game2Scores;
private List<GameScore> game3Scores;
private int game1HighScore;
private int game2HighScore;
private int game3HighScore;

GameScore将是一个类,其字段为GameName或GameId、score,并且可以创建为用于设置游戏时间。
之后,我建议您将所有匹配保存在集合中。也许可以这样做:

**集合:**匹配

在这个集合中,您将保存每场比赛的GameScore和球员ID。
每当一个文档被插入到match集合中时,您将触发一个cloud函数来更新玩家排名和全局排名。
您可以每隔几分钟更新一次全球排名,以避免在同一文档中大量写入。
请记住正确查询以避免大量读取。

9ceoxa92

9ceoxa922#

1.用新分数覆盖最旧分数的最佳方法是什么?
在当前的数据结构在您的屏幕截图,您可以只比较退出评分在客户端看看是否需要更新分数.
1.我想能够显示在应用程序的高分列表,从高到低的所有用户。我该怎么做?
1.我应该做一个“分数”收集。我如何连接分数到用户?
你可以把分数和用户ID放在同一个文档中,然后把所有文档放在同一个集合中,就像你说的那样。如果特定用户需要自己的前三个分数,只需在这两个字段上运行查询。你也可以使用集合组来实现这一点,这取决于你的情况。

相关问题