我目前正在使用用户配置文件构建我的iOS 10应用程序,该应用程序应具有某些成就和经验值(与StackOverflow类似的系统) . 我已经 Build 了我的Facebook登录,FIRAuth等 . 目前我正在考虑Firebase数据库的数据结构 . 我已经阅读了Firebase Guide for flat data structures以及一些常规的Firebase数据指南,例如来自Ray Wenderlich的指南 .
这是用户可以做的事情: already :
-
登录Facebook(...)并获取图片,名称等(已通过FIRAuth处理)
-
访问 Profiles 页面,其中显示了他们的姓名和 Profiles 图片(已在ProfileViewController中处理)
这是我的 to-do 清单:
与StackExchange / StackOverflow类似,通过徽章/ Headers
- 基本成就,例如用户已完成动作XY 20次=>徽章20次动作XY;我在考虑:
a)在每个用户的配置文件中都有一个数组/列表,它包含所有收集的徽章(作为字符串)或
b)为用户配置文件中的每个成就提供单个布尔变量
- 第二个成就跟踪器,它跟踪应用程序的一般用法 - 类似于具有经验值的RPG游戏中的调平系统,因此只是DB中每个配置文件的Int值
My question:
您如何将FIRAuth配置文件与数据库结合起来以保存上述徽章(可能达到50-60个成就)以及用户的单独级别/ xp点?
请记住,我是JSON DB建模的新手 . 对于所讨论的功能,我不想要代码等方面的解决方案 - 只需帮助用户配置文件的数据结构 .
我也将在未来调查用户配置文件的扩展(消息传递等),我应该能够向所有具有某些级别/成就的用户发送通知(这使我倾向于b)) - 所以太多的嵌套已经不可能了 .
1 回答
使用下面的结构,您可以通过观察用户的成就路径的子项来检索特定用户的成就 . 然而,这只是成就的关键 .
假设您的用户使用了uid
1j6Ft1BT30TFG403obvGfjOHE4th
,则对于user-achievements/1j6Ft1BT30TFG403obvGfjOHE4th
中的每个子项,您可以使用子键在achievements/-KQpsPExLsKdnVHMliiP
处观察每个成就的值 .