我目前正在编写一个健身应用程序,允许记录用户的所有个人记录。
我是 Firebase Cloud Firestore 的新手,所以我真的不知道如何构建数据库。
在我看来,我有两个选择:
选项 1
Users | +--UserID | | | +--Name | +--Phone | +--etc.. | | Users-records | +--UserID | | | +--RecordName | | | | | +--recordValue | | +--recordType | | | +--RecordName | | +--recordValue | | +--recordType
选项 2
Users | +--UserID | | | +--Name | +--Phone | +--etc.. | +--Records | | | | | +--RecordName | | | | | | | +--recordValue | | | +--recordType | | +--RecordName | | | | | | | +--recordValue | | | +--recordType
问题是:我必须为用户拆分集合吗? 您认为这种架构是否符合目的(即记录用户的个人记录)?
非常感谢
最佳答案
您的数据库结构实际上取决于您将如何使用它。请记住,每当您观察一个节点时,您也在观察所有子节点。
所以我可能会选择更接近选项二的东西,可能是这样的:
Users | +--UserID | | | +--UserInfo | | | | | +--Name | | +--Phone | | +--etc.. | | | +--Records | | | | | +--RecordName | | | | | | | +--recordValue | | | +--recordType | | +--RecordName | | | | | | | +--recordValue | | | +--recordType
我会选择这个,因为我想象你想一次获得所有的 UserInfo,所以我们可以观察那个“UserInfo”节点并获得所有的 child :姓名、电话等。 ..
然后我认为您还想一次获取所有记录,这样我们就可以观察“记录”节点并获取所有数据。
此外,如果您愿意,您可以通过观察 UserID 立即获取所有内容!
但是,如果您可能要获取所有用户的列表,那么您肯定不希望所有这些数据都集中在一个地方,而且这种设计是行不通的,因为要观察的数据太多了只是为了获得所有用户。
总结:选择一个最容易获得所需内容的选项,而不会获得不需要的额外数据!
关于Swift & Firebase - 为用户信息拆分数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50536322/