一尘不染

如何在Swift中过滤Firebase数据?

swift

基本上,我有一个名为的结构,主题包含TitleDescription以及一个Published标志(有关说明,请参见下面的屏幕截图)。

Firebase数据库中的主题对象

在应用程序中,我想过滤数据,仅显示具有的主题published = true

这就是我想要做的:

self.ref = FIRDatabase.database().referenceFromURL(FIREBASE_URL).child("topics")
        self.ref?.queryEqualToValue("published")
        self.ref?.observeEventType(.Value, withBlock: { (snapshot) in
            //...Handle Snapshot here
        })

但这是行不通的。我应该如何处理?在此先感谢您的帮助。


阅读 221

收藏
2020-07-07

共1个答案

一尘不染

您那里有一些小错误。总体来说还算不错,但是结合起来它们将永远无法正常工作:

  1. 调用任何query...方法都将返回一个新对象
  2. 您需要orderByChild()先过滤其价值
  3. 您需要遍历结果

结合这些:

let ref = FIRDatabase.database().referenceFromURL(FIREBASE_URL).child("topics")
let query = ref.queryOrderedByChild("published").queryEqualToValue(true)
query.observeEventType(.Value, withBlock: { (snapshot) in
    for childSnapshot in snapshot.children {
        print(childSnapshot)
    }
})

我们会定期收到这个问题。

2020-07-07