我的数据库看起来像这样:
在我的应用程序中,我有一个搜索栏,在用户搜索时我想找到所有具有相同名称或以相同文本开头的用户。
所以我做的是:
func seachUser(named : String){
usersRef.queryOrdered(byChild: "userName")
.queryStarting(atValue: named)
.observeSingleEvent(of: .value) { (snap) in
print(snap.value)
}
}
但是,每次我获得所有用户列表。 我该如何解决? 感谢
答案 0 :(得分:1)
您查询所谓的开放式范围。即如果named
是Jo
,那么您将获得以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)
尝试这可能会有所帮助。
$