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"
两个主要问题:
- 您的查询与您的数据结构不匹配
- 您只能过滤一个 属性。
您的查询与您的数据结构不匹配
对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。
我正在尝试根据对象的名称和城市从 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"
两个主要问题:
- 您的查询与您的数据结构不匹配
- 您只能过滤一个 属性。
您的查询与您的数据结构不匹配
对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。