如何过滤Swift中的Firebase数据?

基本上,我有一个称为主题的结构,其中包含TitleDescription和已Published标志(请参阅下面的屏幕截图以进行说明)。

Firebase数据库中的主题对象

在应用程序中,我想过滤数据,只显示已published = true的主题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 }) 

但是这不起作用。 我应该如何处理这个? 先谢谢您的帮助。

那里有一些小错误。 总的来说没有什么不好,但总的来说,

  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) } }) 

我们定期得到这个问题。 例如,从昨天看起来非常相似: Firebase查询不正确执行 。 由于我的解释随着每个答案而变化,所以我build议浏览一下阅读我的相关答案,直到它被点击。

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