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

时间:2016-06-02 23:25:58

标签: firebase firebase-realtime-database

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

1 个答案:

答案 0 :(得分:1)

你可以做两件事:

1)创建一个以UID为键的投票节点和一个总结所有投票的值。

post:{
  //All the data
  likes:{
     $user_1:1,
     $user_2:-1,
  }
}

然后获取SingleValue事件或Value事件(取决于您是否要跟踪更改)并总结所有孩子

2)您可以使用交易块,只需保存一个值,然后根据投票增加或减少它

(这是一个链接,您可以在其中找到Android,iOS或java的交易) https://firebase.google.com/docs/database/web/save-data#save_data_as_transactions

 post:{
   //All the data,
   likes:2,
 }

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

我建议同时使用两者,以保持用户喜欢的灵活性(比如在Facebook中),这样他就可以不同于某些东西,并使用带数字的交易来保持其可扩展性。所以如果一个帖子获得1,000,000个喜欢你就不会这样做每次有人加载帖子时都必须计算1,000,000个喜欢