使用Firebase和Swift 3进行一对多查询

时间:2016-10-01 18:43:57

标签: swift firebase firebase-realtime-database swift3

我有一个应用程序,它有主题和类别,一个类别可能属于一个或多个主题,我试图过滤数据只显示具有标记为true的某个主题ID的类别,这是结构: enter image description here Categories with references to the topics ID.

这是我提出的代码(正在使用Swift 2.3):

self.ref = FIRDatabase.database().reference(fromURL: FIREBASE_URL).child("categories")
let query = ref?.queryOrdered(byChild: "topics/idt2").queryEqual(toValue: true)
query!.observe(.value, with: { (snapshot) in
    //This should bring back both categories, Soccer and Moon

    print("Inside query \(snapshot.value)") // Prints null

})

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

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

您需要在回调块中处理此列表:

query!.observe(.value, with: { (snapshot) in
    for child in snapshot.children {
        print(child.key)
    }
})

另见: