如何使用.validate规则访问数据属性?

时间:2014-05-21 03:17:52

标签: firebase firebase-security

我尝试验证用户个人资料是否具有特定属性,以便在我的Firebase路径中允许.write数据,但我找不到方法。

这是我的Firebase中的用户个人资料结构:

root
|--user_profiles
|   |--uid
|   |  |--name
|   |  |--email
|   |  |--invite // How could I reach the properties of this path with my .validate rules?

这些是我试图让它发挥作用的规则:

 "invitations": {
      ".write": true,
      ".validate": "auth.provider == 'provider' && auth.id == '123456'",
      "$invitation": {
        ".read": true, 
        "used": {
          ".validate": "root.child('user_profiles').hasChild(auth.uid).(...)" // I'm stuck here.
        }
      }  
    }

如果且仅当属性“邀请”符合我的要求(例如,它们是否相等)时,我们的想法是允许{used}中的.write

我真的陷入了困境,我不想让它在不理解的情况下发挥作用。

1 个答案:

答案 0 :(得分:2)

您可以简单地连接邀请的路径:

".validate": "root.child('user_profiles/'+auth.uid+'/invite').val() === ???"

用您的标准替换???,例如data.val()(对于此路径的当前值)或newData.val()(对于在此路径中设置的值)。