Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.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
Ios 如何从Firebase引用获取第一层上的子级?(浅层查询)_Ios_Swift_Firebase_Firebase Realtime Database - Fatal编程技术网

Ios 如何从Firebase引用获取第一层上的子级?(浅层查询)

Ios 如何从Firebase引用获取第一层上的子级?(浅层查询),ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,我有一个Firebase数据库结构,如下所示: /users - abc001 - name: "Harry Watson" - credentials: - email: "h.watson@yahoo.com" - abc002 - name: "Jason Polakow" - credentials: - email: "j.polakow_

我有一个Firebase数据库结构,如下所示:

/users
    - abc001
        - name: "Harry Watson"
        - credentials: 
            - email: "h.watson@yahoo.com"
    - abc002
        - name: "Jason Polakow"
            - credentials: 
                - email: "j.polakow_1@gmail.com"
    - abc003
        - name: "Madeleine Février"
        - credentials: 
            - email: "mad_fev@gmail.fr"
    - ...
我想让所有孩子都在第一层,例如:

- abc001
- abc002
- abc003
...
  • 我不知道怎么做。据我所知,
    事件也会为每个子级(第二层和第三层)的每个子级触发
  • childAdded
    事件也不是正确的选择,因为我只想接收一次数据(我不想监听数据更改/childAdded…。
  • childAdded
    的单个事件只触发一次并返回第一个子事件(
    abc001
你能帮我吗


提前感谢。

这在您的数据结构中是不可能的。Firebase实时数据库没有“浅层查询”。当你监听一个位置时,你会一直得到它的所有嵌套数据。有很多方法可以改变这一点


您可以在数据库中创建一个新位置,其中只包含您正在查找的数据。在NoSQL数据库中,像这样复制数据是很常见的。您只需记住,在任何时候需要更改其中一个副本时,都要使所有副本保持最新状态。

但是否可以获取包含用户信息的所有密钥(
abc001
,…)?我的问题是,我只想获取一次数据,不管我是否获得所有凭据,等等。我不确定你在问什么。这听起来和你最初问的有些不同?在我的回答中,我说不可能只得到那些键而不得到其他任何东西,因为查询不是肤浅的。如果向
/users
添加观察者,则每次都将获得该位置下的所有数据。@T.Meyer snapshot.value将代表“users”节点下的整个树,并由您编写代码遍历该树。请注意,获取这样一个完整的树可能不是很有效,但这正是您所要求的!:-)@AndréKool这有点超出了范围,因为OP是专门谈论swift的。由于技术原因,移动客户端库不支持此功能。