Firebase 在 swift2 中按名称和城市过滤数据

Firebase filter data by name and city in swift2

我正在尝试根据对象的名称和城市从 Firebase 获取数据。 我的 firebase 树看起来像这样:

MYAPP
Object:
   - 12837291ß2837(a random ID):
     "name": "test"
     "city": "Hong Kong"
   - 12382133193u2:
     "name": "test"
     "city": "Paris"
   - 2137829128738: 
     "name": "test2"
     "city": "Frankfurt"

例如,我只想获取名称为 "test" 且城市为 "Hong Kong" 的对象。

我试过这样的东西但是我没有得到任何数据:

let ref = FIRDatabase.database().referenceFromURL("https://myRef")
    ref.queryOrderedByChild("Object").queryEqualToValue("test").observeEventType(.ChildAdded) { (snapshot) in
        print(snapshot)
    }

我还在 Firebase 中添加了规则,例如:

".indexOn": "Object"

两个主要问题:

  1. 您的查询与您的数据结构不匹配
  2. 您只能过滤一个 属性。

您的查询与您的数据结构不匹配

对sort/filter你先指定要过滤的属性然后过滤操作。由于您指定的值来自 name 属性,因此正确的查询是:

let ref = FIRDatabase.database().referenceFromURL("https://myRef")
let query = ref.queryOrderedByChild("name").queryEqualToValue("test")
query.observeEventType(.ChildAdded) { (snapshot) in
    print(snapshot)
}

您只能筛选一个 属性

Firebase 数据库仅支持 ordering/querying 单个属性。参见 Query based on multiple where clauses in firebase