Firebase queryEqualToValue获取Swift 2.3中的密钥

时间:2016-10-29 05:01:44

标签: ios swift firebase firebase-realtime-database

我正在使用Swift和Firebase在iOS中开发一个小应用程序。我在查询数据和检索值时遇到问题。 我的firebase实时数据库是:

"qrcode" : {
   "postsedation_room" : "http://bing.com",
   "preprocedure_room" : "http://google.com",
   "presedation_room" : "http://en.m.wikipedia.org"
}

我想提出这个问题:

let query = rootRef.child("qrcode").queryEqualToValue("http://bing.com")

query.observeSingleEventOfType(.Value, withBlock: { snapshot in
   print(snapshot)
})

打印一个关键值&#34; postsedation_room&#34;。 此时印刷的结果是 Snap (qrcode) <null>你可以帮助我,以便我可以根据孩子的价值打印钥匙吗?

1 个答案:

答案 0 :(得分:0)

对Firebase数据库执行查询时,可能会有多个结果。因此,如果附加值观察器,则快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。

所以在你的观察者中你需要处理那个列表。最简单的方法是迭代它:

let query = rootRef.child("qrcode").queryOrderedByValue().queryEqualToValue("http://bing.com")

query.observeSingleEventOfType(.Value, withBlock: { snapshot in
   for child in snapshot.children {
      print(child.key)
   }
})

或者,您可以观察单个childAdded eventL

let query = rootRef.child("qrcode").queryEqualToValue("http://bing.com")

query.observeSingleEventOfType(.ChildAdded, withBlock: { snapshot in
   print(snapshot.key)
})