我正在尝试在用户提交的“帖子”上创建一个类似Reddit / Hacker News的投票系统。我不想让用户多次投票给同一个帖子。使用Firebase的安全API阻止用户执行此操作的最佳方法是什么?
答案 0 :(得分:2)
一种方法是为每个帖子设置一个位置,然后为孩子提供喜欢该帖子的用户ID。例如。 https://<you>.firebaseio.com/posts/<post_id>
和https://<you>.firebaseio.com/posts/<post_id>/likes/<user_id>
。
然后,您可以拥有一个.validate
规则,当尝试向列表添加推送新内容时,首先检查https://<you>.firebaseio.com/posts/<post_id>/likes
是否已有该子项。所以规则看起来像:(注意:未经测试)
"likes": {
".validate": "!data.hasChildren([newData.val()])",
},
(很高兴听到有更好的办法在那里做到这一点!)