Firebase NoSQL数据建模类计数器

Firebase NoSQL数据建模类计数器,firebase,firebase-realtime-database,nosql,Firebase,Firebase Realtime Database,Nosql,我目前正在学习Firebase/NoSQL数据库建模。我刚看完电影,但我仍然没有什么疑问 假设我正在创建Instagram风格的应用程序,用户可以在其中共享他们的照片,每个用户都可以喜欢每张照片 因此,我想实现两件事: 1.知道哪个用户喜欢哪张照片。(因此每个用户只有一张照片) 2.每张照片有多少人喜欢 我当前的数据库如下所示: { "images": { "100": { "imageUrl": "../../image.png", }, "101":

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

假设我正在创建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也这样做)?

建议在每篇文章下设置计数器(
likes\u count
)。还有一个节点(
喜欢
)和一个列表/。像这样:

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

这样,您将确保每个用户只有一个like,因为密钥在Firebase实时数据库节点下必须是唯一的,并且用户ID用作
like\u count
节点下的密钥。您还可以知道哪些用户喜欢这张照片,因为他们的UID在那里。很明显,你可以通过进入柜台看到一张照片有多少人喜欢。

干杯!所以基本上我可以使用相同的“likes\u count”结构来跟踪每个用户的追随者?“follower\u count/followers”和“following\u count/following”我不明白为什么不可以;)