Firebase 高效地存储和检索喜欢的内容

Firebase 高效地存储和检索喜欢的内容,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,在我的Firebase数据库中,我有帖子,然后经过身份验证的用户可以“喜欢”帖子。我如何才能有效地获得一个帖子收到的赞数。我知道使用MongoDB我可以将用户id添加/删除到列表中,然后使用MongoDB函数快速获取其长度,并将其设置为相同的数量,但我不知道如何使用Firebase做到这一点。我还可以将其添加/删除到列表中,并增加一个likeCount变量,但这似乎会导致并发性问题,除非Firebase有相应的函数。我可以调用哪些函数来最好地处理这个问题并很好地扩展?提前谢谢 你可以做两件事:

在我的Firebase数据库中,我有帖子,然后经过身份验证的用户可以“喜欢”帖子。我如何才能有效地获得一个帖子收到的赞数。我知道使用MongoDB我可以将用户id添加/删除到列表中,然后使用MongoDB函数快速获取其长度,并将其设置为相同的数量,但我不知道如何使用Firebase做到这一点。我还可以将其添加/删除到列表中,并增加一个likeCount变量,但这似乎会导致并发性问题,除非Firebase有相应的函数。我可以调用哪些函数来最好地处理这个问题并很好地扩展?提前谢谢

你可以做两件事:

1) 创建一个投票节点,UID作为键和一个值来汇总所有投票

post:{
  //All the data
  likes:{
     $user_1:1,
     $user_2:-1,
  }
}
然后只需要得到一个单值事件或一个值事件(取决于您是否希望跟踪更改),并将所有子项相加

2) 您可以使用事务块,只需保存一个值并根据投票增加或减少它

(这里有一个链接,您可以在其中找到android、iOS或java的事务)

这实际上取决于你想存储多少信息,以及用户在投票后可以做什么


我建议两者都使用,以保持用户喜欢的灵活性(比如Facebook),这样他就可以不喜欢某些东西,并使用带有数字的事务来保持其可伸缩性。。因此,如果一篇文章获得1000000个喜欢,你不必在每次有人加载该文章时计算1000000个喜欢

非常感谢!我真不敢相信我在看文件的时候错过了这个!Firebase最近引入了云功能。我想我可以帮你。检查
 post:{
   //All the data,
   likes:2,
 }