【问题标题】:Efficiently storing and retrieving likes有效地存储和检索喜欢
【发布时间】:2016-06-03 08:20:48
【问题描述】:

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

【问题讨论】:

  • Firebase 最近推出了 Cloud Functions。我想我可以帮助你。检查this answer

标签: firebase firebase-realtime-database


【解决方案1】:

你可以做这两件事:

1) 创建一个投票节点,UID为key,value为所有投票的总和。

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 个赞

【讨论】:

  • 非常感谢!我不敢相信我在阅读文档时错过了这个!
猜你喜欢
  • 2018-10-12
  • 1970-01-01
  • 2020-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多