我试图从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"
发布于 2016-08-21 07:10:35
两个主要问题:
查询与数据结构不匹配
若要排序/筛选,请首先指定要对其进行筛选的属性,然后指定筛选操作。由于您指定的值来自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。
https://stackoverflow.com/questions/39063223
复制