首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >swift2中按名称和城市划分的防火墙过滤数据

swift2中按名称和城市划分的防火墙过滤数据
EN

Stack Overflow用户
提问于 2016-08-21 10:32:26
回答 1查看 450关注 0票数 0

我试图从Firebase获取数据,具体取决于对象的名称和城市。我的火柴树是这样的:

代码语言:javascript
运行
复制
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”。

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

代码语言:javascript
运行
复制
let ref = FIRDatabase.database().referenceFromURL("https://myRef")
    ref.queryOrderedByChild("Object").queryEqualToValue("test").observeEventType(.ChildAdded) { (snapshot) in
        print(snapshot)
    }

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

代码语言:javascript
运行
复制
".indexOn": "Object"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-21 15:10:35

两个主要问题:

  1. 查询与数据结构不匹配
  2. 只能对一个属性进行筛选。

查询与数据结构不匹配

若要排序/筛选,请首先指定要对其进行筛选的属性,然后指定筛选操作。由于您指定的值来自name属性,所以正确的查询是:

代码语言:javascript
运行
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39063223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档