使用AngularFire,Firebase防止双重投票

时间:2013-11-27 00:59:30

标签: firebase angularfire

我在使用Angularfire v2(http://angularfire.com/documentationv2.html保存和检索Firebase中的值时遇到问题,v2是必要的,因为v1似乎无法按优先级排序项目)

这是一个简单的投票降低应用程序使用Persona登录进行授权,问题出现在用户投票“故事”时,我想将他的用户ID添加到'故事/用户',但它似乎是唯一的在不删除所有其他值的情况下执行此操作的方法是使用'$ add'(push),它会抛出一个随机密钥名称,我不知道如何查询。

因此,为了防止双重投票,我必须以某种方式询问'故事/用户'是否已经拥有该用户的ID。

story---
        users---
                -J9LrtJwXnCI3ZYqsIz1: user-1
                -J9Lriauhfdoaiuhfafd: user-2

有没有人知道如何确定用户1是否在“故事/用户”中?

请记住,Angularfire v2有一些重大变化。

如果有人有更好的想法,我会很高兴听到它(但我真的试图避免将其保存为用户1 /故事ID,出于其他原因)

1 个答案:

答案 0 :(得分:1)

按用户的ID存储记录,而不是随机推送ID。例如,您可以创建votes路径,并跟踪谁在那里投票:

/votes/user-1
/votes/user-2

然后您可以编写安全规则以防止双重投票,如下所示:

{
   "rules": {
       "votes": {
            "$record_id":  {
                // something like this
                ".write":  "auth.id === $record_id && data.val() === true"
            }
       }
   }
}

您可以使用$ set和$ child命令在V2 angularFire中执行该设置。

dataRef.$child( user.id ).set( true ); // for example