在我的 Firebase 数据库中,我有帖子,经过身份验证的用户可以“喜欢”帖子。如何有效地获取帖子收到的点赞数。我知道使用 MongoDB 我可以将用户的 id 添加/删除到列表中,然后使用 MongoDB 函数非常快速地获取它的长度并将其设置为等于喜欢的数量,但我不知道如何使用 Firebase 做到这一点。我还可以将其添加/删除到列表中并增加 likeCount 变量,但这似乎会导致并发问题,除非 Firebase 有相应的函数。我可以调用哪些函数来最好地处理这个问题并很好地扩展?提前致谢!
最佳答案
你可以做这两件事:
1) 创建一个投票节点,以 UID 作为键,并用一个值来汇总所有投票。
post:{
//All the data
likes:{
$user_1:1,
$user_2:-1,
}
}
然后获取 SingleValue 事件或 Value 事件(取决于您是否想跟踪更改)并总结所有子事件
2)您可以使用交易 block 并仅保存一个值并根据投票增加或减少它
(这里是一个链接,您可以在其中找到 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 个赞
关于firebase - 高效存储和检索点赞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37603689/