问题:添加关注/关注者功能时,最佳的DB结构是什么?



我有一个具有以下DB结构的应用

  "Posts" : {
"Dm8iyaXXdTOJGsymEiLNVO6OdDK2" : {
  "post:570915537" : {
    "Media" : {
      "image" : {
        "mediaUrl" : "https://firebaseURL",
        "postTimeStamp" : 5.70915539085856E8,
        "timeStamp" : 5.7091551482329E8
      }, ...

我现在要添加关注者。我在想我要么添加一个全新的小组:

  "Followers" : {
"Dm8iyaXXdTOJGsymEiLNVO6OdDK2" : {
  "Following" : {
    follower1: "Dm8iyaXXdTOJGsymEiLNVO6OdDK2";
    //other followers
  }, ...

或在原始组中添加新节点并将其添加到其中。最后一个选择是做类似于上述操作的操作,但在"用户"部分中。

什么是最好的行动?

使用firestore的关注/未关注模式可能是:2个根集,一个持有用户的根集,另一个可以通过复合键在用户之间保存以下关系

users/{userID}
  .. userData
  .. followerCount
  .. followedCount

following/{followerID_followedID}
  .. followerId
  .. followedId
  .. createdAt

当Usera开始关注用户b时:

  • 在ID中设置一个新文档以下内容集合。
  • 触发云功能,该功能将运行交易以更新两个用户的计数器。

当用户停止关注另一个用户时,请执行反向操作。

在客户端中,您可以知道usera是否仅通过检查文档userauid_userbuid是否存在于之后的集合中。您还可以通过查询collectID ==当前用户ID的集合来获取用户关注者的列表。

希望对您有帮助。

最新更新