截至目前,我已经为我的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
。