Firebase 中最高效的投票系统

Most efficient voting system in Firebase

我正在开发一款应用程序,该应用程序允许用户上传图片并为彼此的图片评分(因此用 1-5 星投票)。但是我一直认为我正在构建的数据库系统效率不够高。希望有高手指点一下。

现在我有一个名为“图像”的数据库table。它具有以下字段:

每次用户投票时,amount_of_votes 都会获得 +1,评分的计算公式为(评分*旧票数 + 新票数)/新票数

但这给我带来了以下问题:

我想建立一个新的投票系统,其中有一个名为 votes 的新 table,它包含 user_id 和用户投的票。但这给了我以下问题:

有谁知道我可以使用的最好的系统是什么?我在互联网上花了几天时间,但我还没有找到最好的系统...

我没有尝试自己实现它,但我的方法是使用 Snapshot listener

它可以帮助您在文档发生变化时在应用程序中更新信息。我使用的投票系统分别收集 5 星、4 星、3 星等。例如:一个用户获得了多少个 5 星评级,一个用户获得了多少个 4 星评级等等。 然后,为了计算平均评分,我使用以下公式:

((no_of_votes_for_5stars * 5) + (no_of_votes_for_4stars * 4) + (no_of_votes_for_3stars * 3) + (no_of_votes_for_2stars * 2) + (no_of_votes_for_1star * 1)) / (no_of_votes_for_5stars +no_of_votes_for_4stars + no_of_votes_for_3stars + no_of_votes_for_2stars + no_of_votes_for_1star )

您可以将星星数数据单独保存在 Firestore 数据库中,每当有人评价照片时,您可以增加当前计数。您可以在应用程序代码中实现上述公式,以便您的应用程序获取星星数量信息并使用上述公式计算平均值,然后显示它。