我正在开发一个应用程序,你住在公寓里并有室友,现在我正在尝试禁止所有不住在那个公寓的用户访问。
以下是我的规则:
{
"rules": {
// no access
".read": "false",
".write": "false",
"Users" : {
"$userID" : {
//read on User Folder for all Users
".read" : "auth != null",
//write only for the user itself
".write" : "$userID === auth.uid"
}
},
"Flat" : {
"$flatID" : {
//Flat (identified through flatID) can only be accessed, if you are a roommate
".read" : "$flatID === root.child('Users').child(auth.uid).child('flatID').val()",
".write" : "$flatID === root.child('Users').child(auth.uid).child('flatID').val()"
}
}
}
}
我的数据库看起来有点像这样:
root
.Users
..uID
...(data)
...flatID : number
.Flat
..flatID
...(data)
因此该用户的flatID存储在root / Users / uID / flatID的“文件夹”中,我试图访问它:root.child('Users').child(auth.uid).child('flatID').val()
然后用“文件夹”flatID检查它。 / p>
现在,如果我尝试将任何数据写入公寓,我没有正确的权限,我找不到我的错误。 Users / userID规则工作正常
提前致谢:)
编辑:
数据如下所示:
root
_Flat
__1
___name : "asdf"
__2
___(more Flats, for the Problem we only need one)
_Users
__F8XpTmxfIzYzrEY92alBOnx5eTO2 (Auth ID)
___flatID : 1
__nextUserID
___NextUserData
编辑平面名称的我的Java代码是:
fref.child("Flat").child(flatID).child("name").setValue(flatNameInput.getText().toString())
flatID
是具有该用户的flatID的变量