结构:
{
"accounts" : {
"JGeRgwAUBM..." : {
"active" : true,
"created" : 1468406951438,
"key" : "JGeRgwAUBM..."
}
}
规则:
{
"rules": {
".read": false,
".write": false,
"accounts": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}
目标: 我宁愿使用push()生成的密钥而不是使用auth.uid作为数据的密钥.getKey()
{
"accounts" : {
"theKeyIGetFrom: push().getKey()" : {
"active" : true,
"created" : 1468406951438,
"auth_uid" : "JGeRgwAUBM..."
}
}
寻找类似这样的规则集:
{
"rules": {
".read": false,
".write": false,
"accounts": {
"$key": {
".read": "$key.auth_uid === auth.uid",
".write": "$key.auth_uid === auth.uid"
}
}
}
}
答案 0 :(得分:0)
回答你的问题,你将能够通过以下规则达到你想要的规则。
{
"rules": {
"accounts": {
"$key": {
".read": "data.child(auth_uid).val() === auth.uid",
".write": "data.child(auth_uid).val() === auth.uid"
}
}
}
}
但请记住,要检索和编写数据,您需要知道$key
,因为您无法通过访问/accounts
来获取任何数据。那是因为你没有读/写规则来访问特定的/accounts
分支。
如果它在我手中,我宁愿选择你当前的/accounts/uid
解决方案。您可以轻松地检索用户数据,因为您可以获得当前经过身份验证的用户uid。