【发布时间】:2018-02-25 22:36:09
【问题描述】:
来自 SQL 背景和观看教程,我正在尝试在 Firestore 中做一个模型来了解事情是如何工作的。我基本上想要模拟用户有多个列表并且每个列表都有他的朋友(以显示朋友的名字)的情况。下面说的有道理吗?
Users
"john@xyz.com"
-Name: John Smith
"celina@xyz.com"
- Name: Celina West
"dan@xyz.com"
- Name: Dan Nelson
Lists
"john@xyz.com"
List_Titles
"List 1"
- <AutoGenId>: Celina West
- <AutoGenId>: Dan Nelson
任何带“-”的都是字段,任何带括号的都是文档,任何没有前缀的都是集合。
我在这里发现的一个问题是,假设用户更新了他/她的名字。然后我不仅要去用户集合,还要通过每个子集合列表来查找那个人并更新名称。我考虑过使用电子邮件 ID 而不是名称,但这与“在您查看时构建 nosql db”的方式背道而驰。另外,每次我必须在单独调用每个 Id 以查询名称时点击用户表。
我的假设正确吗? 谢谢
【问题讨论】:
-
我建议改变这个结构。将键与其包含的数据分离通常是最佳实践。如果电子邮件地址用作键,则对该节点的引用指的是该电子邮件。但是,如果用户更改了他们的电子邮件,这意味着所有引用也需要更改。但是,密钥不能更改,节点需要被读取和重写。添加电子邮件子节点并使用 push() 或 childByAutoId (swift) 创建节点密钥会简单得多,因此它是“通用的”。这样,无需重新创建一堆节点即可更改电子邮件。
标签: android firebase google-cloud-firestore