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

时间:2016-08-21 10:32:26

标签: firebase swift2 firebase-realtime-database

我正在尝试从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”的Object。

我试过这样但我没有得到任何数据:

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

我还在Firebase中添加了以下规则:

".indexOn": "Object"

1 个答案:

答案 0 :(得分:1)

两个主要问题:

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

    不匹配

    要对您进行排序/过滤,请先指定要过滤的属性,然后指定过滤操作。由于您指定的值来自name属性,因此正确的查询为:

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

    您只能过滤一个属性

    Firebase数据库仅支持对单个属性进行排序/查询。请参阅Query based on multiple where clauses in firebase