Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json Firebase中的$variables_Json_Firebase_Firebase Realtime Database_Firebase Security - Fatal编程技术网

Json Firebase中的$variables

Json Firebase中的$variables,json,firebase,firebase-realtime-database,firebase-security,Json,Firebase,Firebase Realtime Database,Firebase Security,最近:这里是一个JSON规则树: { "rules": { "Leaders":{ "$leaderuid": { ".write": "$leaderuid == auth.uid", "DATA": { ".write": "data.parent().child('ALLOWED').child(auth.uid).exists()" } } } } } 实际数据

最近:这里是一个JSON规则树:

{
  "rules": {
    "Leaders":{
      "$leaderuid": {
         ".write": "$leaderuid == auth.uid",
         "DATA": {
           ".write": "data.parent().child('ALLOWED').child(auth.uid).exists()"
         }
       }
    }
  }
}
实际数据库

    {
  "Leaders" : {
    "A" : {
      "ALLOWED" : {
        "b" : 0,
        "c" : 0,
        "d" : 0
      },
      "DATA" : {
        "blah blah1" : "content writable by bcd",
        "blah blah2" : "content writable by bcd"
      },
      "REQUESTS" : {
        "E" : 0
      }
    }
  }
}
我只是想帮助理解
$leaderuid
的含义。我已经阅读了文档,这是一个临时变量

我有一个想法,请纠正我或告诉我我的想法是否正确


创建的临时变量
$leaderuid
是创建的leader的authUID

$variable具有节点所具有的您所处的任何键。因此,如果您有以下结构:

{
  "Leaders" : {
    "A" : {
      ...
    },
    "B": {
      ...
    }
  }
}
A
下评估您的安全规则时,
$leaderuid
将是
A
。但是,当在
B
下评估规则时,
$leaderuid
将是
B

$变量的名称并不重要。但是,因为您似乎保存了一个领导者列表,并且您说您将其存储在他们的UID下,所以我在前面的回答中将变量命名为
$leaderuid


这在本手册中有介绍。在那里和文档的其余部分花上几个小时,应该可以回答您可能遇到的许多问题。

该$variable具有节点所具有的任何键。因此,如果您有以下结构:

{
  "Leaders" : {
    "A" : {
      ...
    },
    "B": {
      ...
    }
  }
}
A
下评估您的安全规则时,
$leaderuid
将是
A
。但是,当在
B
下评估规则时,
$leaderuid
将是
B

$变量的名称并不重要。但是,因为您似乎保存了一个领导者列表,并且您说您将其存储在他们的UID下,所以我在前面的回答中将变量命名为
$leaderuid


这在本手册中有介绍。在那里和文档的其余部分花上几个小时,应该可以回答您可能遇到的许多问题。

这只是Leader Node下动态键的占位符这只是Leader Node下动态键的占位符!我更了解这一点。不过有一个问题。Firebase将如何检查第一个是UID还是第二个或第三个。。。。?本质上,$变量是否创建递归,在其中检查所有$LeaderUID并检查当前id是否与其中任何一个匹配?规则始终在JSON树中实际节点的上下文中进行计算。当您在规则中使用变量(例如
$leaderuid==auth.uid
)时,服务器将从该上下文节点向上搜索,直到找到您声明变量的位置并使用该键。但老实说,当开始在数据库控制台中使用规则模拟器时,这很难解释,也很容易使用。谢谢!我更了解这一点。不过有一个问题。Firebase将如何检查第一个是UID还是第二个或第三个。。。。?本质上,$变量是否创建递归,在其中检查所有$LeaderUID并检查当前id是否与其中任何一个匹配?规则始终在JSON树中实际节点的上下文中进行计算。当您在规则中使用变量(例如
$leaderuid==auth.uid
)时,服务器将从该上下文节点向上搜索,直到找到您声明变量的位置并使用该键。但老实说,当开始在数据库控制台中使用规则模拟器时,这很难解释,也更容易使用。