Firebase queryEqualToValue 在 Swift 2.3 中获取密钥

Posted

技术标签:

【中文标题】Firebase queryEqualToValue 在 Swift 2.3 中获取密钥【英文标题】:Firebase queryEqualToValue get Key in Swift 2.3 【发布时间】:2016-10-29 05:01:44 【问题描述】:

我正在使用 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>你能帮我打印出给定子值的键吗?

【问题讨论】:

@EICaptainv2.0 我将如何更改我的代码来解决这个空问题? 【参考方案1】:

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

【讨论】:

我尝试了两种方法,在这两种情况下它都返回null...您还有其他建议吗?

以上是关于Firebase queryEqualToValue 在 Swift 2.3 中获取密钥的主要内容,如果未能解决你的问题,请参考以下文章

Firebase queryEqualToValue 在 Swift 2.3 中获取密钥

没有结果时,Firebase 查询不调用块

Firebase 在 Swift 中检索数据

如何在一个块中获取 Firebase 查询的所有结果

检查用户名是不是已经存在:Swift、Firebase

无法从“firebase.js”解析模块“firebase”:在项目中找不到 Firebase