我正在尝试从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"
答案 0 :(得分:1)
两个主要问题:
要对您进行排序/过滤,请先指定要过滤的属性,然后指定过滤操作。由于您指定的值来自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。