检索基于子节点的节点的密钥

时间:2016-10-07 07:41:38

标签: ios swift firebase firebase-realtime-database

我试图根据孩子获取节点的密钥。这是我的结构

代码:

RESTAURANTS
    KTNfWKLD0isCsrpys
        name: “McDonalds”
        loc: “LA”
    KTNfWILD0iIkLLekc
        name: “KFC”
        loc: “LV”

代码:

FIRDatabase.database().reference().child("RESTAURANTS").queryOrderedByChild("name").queryEqualToValue("McDonalds").observeEventType(.Value, withBlock: { (snapshot) in
    print(snapshot.key)
}, withCancelBlock: nil)  

我怎样才能获得麦当劳"麦当劳的关键词。在查询?

1 个答案:

答案 0 :(得分:3)

您必须使用allKeys从快照中获取密钥,然后将其循环以逐个获取密钥。试试这段代码

FIRDatabase.database().reference().child("RESTAURANTS").queryOrderedByChild("name").queryEqualToValue("McDonalds").observeEventType(.Value, withBlock: { (snapshot) in
   if snapshot.exists() {
      for key in (snapshot.value?.allKeys)!{
          print(key)
      }
   } 
}
  

正如@Frank van Puffelen所说,这种迭代方式失去了子节点的排序。如果您想获得有序列表而不是先使用snapshot.children