firebase - Firestore,追随者数据结构
问题描述
我只是在创建一个 Instagram 克隆应用程序进行测试
我的数据结构如下
--- users (root collection)
|
--- uid (one of documents)
|
--- name: "name"
|
--- email: "email@email.com"
|
--- following (sub collection)
| |
| --- uid (one of documents)
| |
| --- customUserId : "blahblah"
| |
| --- name : "name"
| |
| --- pictureStorageUrl : "https://~~"
|
--- followers (sub collection)
| |
| --- uid (one of documents)
| |
| --- customUserId : "blahblah"
| |
| --- name : "name"
| |
| --- pictureStorageUrl : "https://~~"
|
假设用户 A 有 100 万粉丝,那么如果用户 A 编辑了一张图片或姓名或 customUserId,是否应该修改每个“关注”100 万粉丝用户的子集合的文档?
应该有 100 万次更新吗?有没有更有效的救援方法?而如果没有其他好办法,在上述方法的情况下,通过云功能的数据库触发器批量修改数据是否合适呢?
解决方案
100万粉丝的每个子集合“关注”的文档是否应该修改?应该有 100 万次更新吗?
这完全由您决定。如果您不想更新它们,那就不要。但是,如果您希望数据保持同步,则必须查找并更新复制该数据的所有文档。
有没有更有效的救援方法?
更新 100 万份文档?不可以。如果您有 100 万份文档要更新,那么您必须逐个查找并更新它们。
而如果没有其他好办法,在上述方法的情况下,通过云功能的数据库触发器批量修改数据是否合适呢?
在 Cloud Functions 中进行更新仍然需要 100 万次更新。这项工作没有任何捷径——前端和后端都是一样的。Cloud Functions 只会让您触发该工作在后端自动发生。
如果您想避免 100 万次更新,那么您不应该复制数据 100 万次。只需存储一个 UID,然后进行第二次查询以查找有关该用户的信息。
推荐阅读
- python - 导入 .csv 文件时,在另一个列表中查找和计算一个列表的元素不起作用
- laravel - 未定义的变量?也许查询是错误的?
- html - Css 转换属性不适用于 Mozilla Firefox
- javascript - 尝试自动填充表单字段但没有运气
- .net - 无法通过 docker 连接到 SQL Server 数据库
- python - ModuleNotFoundError:即使在下载库后也没有名为“pyttsx3”的模块
- javascript - Select2插件在通过jquery动态附加新选择字段时不起作用
- javascript - 如何将多个参数解析为无状态组件?
- mongodb - 带有 eppn 的 REST-API users.list
- python-3.x - 如何在 QuerySelectField 中获取两个标签 - Flask