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