如何防止来自firestore中单个用户的垃圾邮件点赞(在数据库中多次写入)



所以我正在react native和firestore中构建一个社交应用程序。我想让用户";最喜欢的";商店。我在我的用户文档中添加了一个favortesShops数组,因为我需要将附近的商店id与该数组中包含的商店id进行比较。我还有另一个用于分析的集合,它允许我在这个结构中保存文档userId+"@"ShopId和状态:1表示";最喜欢的";和-1表示";不喜欢";。现在,我在每家商店旁边都做了一个按钮来表示我喜欢这家商店。因此,每次单击都会触发分析的batch.set和数组的batch.update。一切都如预期的那样工作,但现在一个用户就可以发送"垃圾邮件";最喜欢的";按钮为每个1或-1触发大量批处理写入(并更新数组(。所以我的问题是,我该如何防止这种情况发生?

您可以添加一个侦听器来捕获更改后的值,并等待1秒钟以上再提交更改。这确保了用户可以多次向按钮发送垃圾邮件,但一旦停止,按钮就会更新。

您希望在客户端上模拟更改,以保持用户体验的更新。确保您正在跟踪应用程序根目录中的更改,以便在用户快速切换时进行处理。

您还可以实现的另一个解决方案是";lastLiked";对于每个用户,这将使所有读取和写入加倍,但您可以在安全规则中使用此值来拒绝频繁的更改。但是它读/写很重,只有在需要时才应该使用。

最新更新