Firebase queryEqualToValue在Swift 2.3中获得密钥

我正在使用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) }) 

打印一个关键值“postsedation_room”。 在这一点上打印的结果是Snap (qrcode) <null>你能帮助我,这样我就可以打印给定子值的键吗?

当您针对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) })