Swift 3和Firebase:从快照中检索自动ID值

时间:2017-01-14 13:05:21

标签: swift firebase firebase-realtime-database snapshot querying

我在firebase上创建了下面的结构,我需要用红色下划线标出自动ID:

enter image description here

我创建的用于查询值的代码:

let query = reference.queryOrdered(byChild: "receiverId").queryEqual(toValue: "LKupL7KYiedpr6uEizdCapezJ6i2")
        //Start process
        query.observe(.value, with: { (snapshot) in
            guard snapshot.exists() else{
                print("Data doesn't exists")
                return
            }
            print(snapshot.key)
}

我的“ snapshot.value ”会导致:

Optional({
    "-KaRVjQgfFD00GXurK9m" =     {
        receiverId = LKupL7KYiedpr6uEizdCapezJ6i2;
        senderId = bS6JPkEDXIVrlYtSeQQgOjCNTii1;
        timestamp = 1484389589738;
    };
})

如何从上面的节点中仅获取字符串 -KaRVjQgfFD00GXurK9m

我曾尝试使用“ print(snapshot.key)”,但会产生用户ID: 的 bS6JPkEDXIVrlYtSeQQgOjCNTii1

一些想法?非常感谢你。

1 个答案:

答案 0 :(得分:10)

.value返回父节点和满足查询结果的所有子节点。在这种情况下,需要迭代子节点(可能有多个子节点与查询匹配)。

snapshot.key是父节点键(bS6JPkEDXIVrlYtSeQQgOjCNTii1),值是所有子节点的快照(字典)。这些孩子中的每一个都是一个关键:uid的值对:值和值是子节点的字典,receiverId,senderId等

此代码将打印每个子节点的uid以及与查询匹配的每个用户节点的值(timestamp)之一。

y1="12.729"