如何将相同的用户数据(反规范化)写入Firestore / Flutter中的多个子集合中

时间:2019-04-03 09:55:02

标签: firebase flutter google-cloud-firestore

比方说,我有一个名为“ Users”的根集合,一个名为“ Posts”的根集合,另一个名为“ Follows”。 在“用户”集合中,有(用户)文档,每个文档都包含一个“订阅源”子集合,在订阅源中,有“用户关注帖子”文档。 在“帖子”集合中,有一个文档列表,每个文档都包含一串字符串。 在“关注”集合中,有一个文档列表,每个文档都包含“关注ID”和“关注ID”字符串。

现在,我想在“帖子”集合中编写数据文档,并在我后面的文档的“馈送”子集合中复制相同的文档(数据)。

这是数据库结构。

---用户(集合)

    |

    --- uid (documents)

         |

         --- name: "User Name"

         --- profile_pic: "pic_url"

         --- Feed (sub-collection)

                |

                --- Following_user_postId (documents)

                --- Following_user_postId (documents)

                --- Following_user_postId (documents)

---帖子(收藏集)

     |

     --- uid (documents)

          |

          --- userId "post Users Id"

          --- image_url "Image url"

          --- Time_stamp "Time Stamp UTC"

---关注(收集)

     |

     --- uid (document)

          |

          --- FollowerId: "Follower Uid"

          --- FollowingId: "Following Uid"

我在这里寻找的是从服务器上以最少的写/读操作检索数据的最佳方法是什么(我不希望这样做很昂贵),以及处理客户端的最佳选择是什么?或cloud_functions。 最后一件事..根据填充提要的情况,读/写是否有任何区别:例如,刚启动并需要填充提要与已经运行,并且仅需要在新帖子出现时就进行填充。如果您可以从用户的feed子集合中提取它,或者通过查询以下集合,然后检索他们关注的用户的所有帖子,则初始填充要求的读取次数更少。 就是这样,谢谢。

0 个答案:

没有答案