Firebase数据库按用户名查询

时间:2018-02-10 11:20:52

标签: ios firebase firebase-realtime-database

我的数据库看起来像这样:

enter image description here

在我的应用程序中,我有一个搜索栏,在用户搜索时我想找到所有具有相同名称或以相同文本开头的用户。

所以我做的是:

func seachUser(named : String){
    usersRef.queryOrdered(byChild: "userName")
    .queryStarting(atValue: named)
    .observeSingleEvent(of: .value) { (snap) in
                print(snap.value)
    }
}

但是,每次我获得所有用户列表。 我该如何解决? 感谢

2 个答案:

答案 0 :(得分:1)

您查询所谓的开放式范围。即如果namedJo,那么您将获得以Jone开头的所有结果,然后是每个子节点。

要仅获取以Jo开头的用户名,您需要添加queryEnding(atValue:来关闭范围。这里的诀窍是结束你想要的最后一个已知字符,我们通常使用已知最高的unicode字符:

func seachUser(named : String){
    usersRef.queryOrdered(byChild: "userName")
    .queryStarting(atValue: named)
    .queryEnding(atValue: named+"\uf8ff")
    .observeSingleEvent(of: .value) { (snap) in
                print(snap.value)
    }
}

答案 1 :(得分:0)

尝试这可能会有所帮助。

$