我对 Firebase 完全陌生,我正在尝试了解“关系”数据(1-1 和 1-many)的最佳数据库模型设计。
我们正在使用火库数据库(不是实时数据库)。
说我们有Projects
其中可以包含许多Users
, and a User
可以是多个Projects
UI 需要显示一个列表Users
in a Project
这显示了类似的事情email
, firstname
, lastname
and department
.
存储关系的最佳方式是什么?
- 一个数组
User
中的 IDProject
文档?
- Id 的映射
Project
文档?
我读过上述建议的方法,但那是为了实时数据库? 火库支持子集合,这听起来更合适......
- 的一个子集合
Users
在项目文件中?
- 单独的集合映射
Project
id to User
id?
- A
Reference
数据类型?我读过这里https://firebase.google.com/docs/firestore/manage-data/data-types https://firebase.google.com/docs/firestore/manage-data/data-types about Reference
数据类型,这听起来像是我想要的,但我找不到更多关于它的信息!
如果它只是一个映射或 Id 数组,那么您将如何检索有关用户的剩余数据?这是否必须位于应用程序 UI 中?
如果它是用户文档的子集合,有什么方法可以维护数据完整性?如果用户更改了姓名,UI/cloudFunction 是否必须更新子集合中该用户名的每个条目?
任何帮助/指示表示赞赏...
在 Firestore 中建模多对多关系的方法与在 Firebase 实时数据库中建模的方法几乎相同,我已在此回答:Firebase 中的多对多关系 https://stackoverflow.com/questions/41527058/many-to-many-relationship-in-firebase。唯一的区别确实是您可以将查找列表存储在每个项目/用户的子集合中。
查找链接项也和以前一样,它确实需要从客户端单独加载它们。这样的客户端连接并不像您最初预期的那么慢,因此在假设它可能不够快之前先对其进行测试。
确保数据完整性可以通过执行批量写入 https://firebase.google.com/docs/firestore/manage-data/transactions#batched-writes或使用交易 https://firebase.google.com/docs/firestore/manage-data/transactions#updating_data_with_transactions。这些要么完全成功,要么完全失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)