【问题标题】:Firebase NoSQL Data modeling - Like counterFirebase NoSQL 数据建模 - 像计数器
【发布时间】:2018-02-03 22:58:29
【问题描述】:

我目前正在学习 Firebase/NoSQL 数据库建模。我刚刚看完Firebase for SQL developers,但我仍然没有什么疑问。

假设我正在创建 Instagram 风格的应用程序,用户可以在其中分享他们的照片,并且每个用户都可以喜欢每张照片。

所以我想实现两件事: 1.知道哪个用户喜欢了哪张照片。 (所以每个用户只有一个喜欢的照片) 2. 每张照片有多少个赞。

我当前的数据库如下所示:

{
  "images": {
    "100": {
      "imageUrl": "../../image.png",
    },
    "101": {
      "imageUrl": "../../image.png",
    }
  },
  "users": {
    "200": {
      "name": "user1"
    },
    "201": {
      "name": "user2"
    }
  },
  "likes": {
    "100": 1,
    "101": 2
  },
  "likesPerUser": {
    "200": {
      "100": "true"
    },
    "201": {
      "100": "true",
      "101": "true"
    }
  }
  "imagesPerUser": {
    "200": {
        "101": "true"
    },
    "201": {
        "100": "true"
    }
}

我的问题与计数器有关,它计算每张照片有多少喜欢。最佳做法是将它们作为自己的“根”对象(当前模型)还是为照片下的“喜欢”创建键值对(也许对 authorID 做同样的事情)?

【问题讨论】:

    标签: firebase firebase-realtime-database nosql


    【解决方案1】:

    This Firebase Sample 建议在每个帖子下都有柜台(likes_count)。并且还有一个带有 list/lookup 的节点(likes)。像这样:

    "images": {
        "100": {
          "imageUrl": "../../image.png",
          "likes_count":2,
          "likes":{
            "200":true,
            "201":true
          }
        },
        "101": {
          "imageUrl": "../../image.png",
          "likes_count":1,
          "likes":{
            "201":true
          }
        }
    }
    

    这样您将确保每个用户只有一个赞,因为在 Firebase 实时数据库节点下密钥必须是唯一的,并且用户 ID 用作 likes_count 节点下的密钥。您还可以知道哪些用户喜欢这张照片,因为他们的 uid 在那里。显然,您可以通过访问计数器查看一张照片有多少赞。

    【讨论】:

    • 干杯!所以基本上我可以使用相同的“likes_count”结构来跟踪每个用户的追随者/追随者? “follower_count / follower”和“following_count / following”
    • 我不明白为什么不;)
    猜你喜欢
    • 2018-01-18
    • 1970-01-01
    • 2020-05-25
    • 2017-10-23
    • 1970-01-01
    • 2016-10-12
    • 2016-12-11
    • 1970-01-01
    • 2021-05-17
    相关资源
    最近更新 更多