Firebase定制规则

时间:2017-02-16 04:01:20

标签: android firebase firebase-realtime-database firebase-authentication firebase-security

截至目前,我已经为我的customer表定义了以下规则。

{
  "rules": {
    "customers":{
      ".read": "auth != null", 
      ".write": "auth != null", 

      "$CID":{
        "UserId":{
          ".validate": "(data.exists() && data.val() == newData.val()) || newData.val() == auth.uid"
        },
        "CustomerName":{
          ".validate": "newData.isString() && newData.val().length < 100"
        },
        "CustomerCode":{
          ".validate": "newData.isString() && newData.val().length<4"
        },
        "CustomerLimit":{}
      }
    }   
  }
}

正如您所看到的,我在UserId分支下有customers,它将保存登录用户ID的值。每个经过身份验证的用户都可以创建基本上属于该特定用户的客户,并只读取/获取由他创建的customers

但是现在我从数据库中读到如下:

DatabaseReference mDatabaseReference= FirebaseDatabase.getInstance().getReference("customers");

这将检索客户下的所有数据。所以我想在

中添加一些read规则到现有规则
"rules": {
    "customers":{
      ".read": "auth != null && auth.uid=loggedInUserId",  //something like this
    .....
    }
}

但是我无法在rules找到如何在这里完成的任务。

作为一种选择,我尝试在query上写UserId,即使在通过有效登录null之后也始终返回UserId

Query query=mDatabaseReference.equalsTo(loggedInUserId,"UserId");

这种方法我不喜欢,因为它最好写在规则中。希望有人知道如何为此要求添加rules

0 个答案:

没有答案