问题:添加关注/关注者功能时最好的数据库结构是什么?

时间:2019-02-28 20:00:20

标签: database firebase firebase-realtime-database database-design

我目前有一个具有以下数据库结构的应用程序,它使用Firebase数据库并且在Swift IOS上:

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

我现在要在其中添加关注者。我当时在想添加一个全新的组:

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

或将新节点添加到原始组中,然后将其添加到原始组中。最后一个选项是执行与上面类似的操作,但在“用户”部分中。

什么是最佳做法?

1 个答案:

答案 0 :(得分:1)

使用Firestore的关注/取消关注架构可能是这样的: 2个根集合,一个包含用户,另一个通过组合键保持用户之间的以下关系

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


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

当用户A开始关注用户B时:

  • 设置ID为 userAuid_userBuid 的新文档中 以下收藏。
  • 触发一个Cloud Function,它将运行一个事务来更新 两个用户的计数器。

当一个用户停止关注另一个用户时,做相反的事情。

在客户端中,只需检查以下集合中是否存在文档userAuid_userBuid,即可知道userA是否跟随userB。 您还可以通过查询collectionId ==当前用户ID的集合来获取用户关注者的列表。

希望对您有帮助。