我用firebase制作了一个小型MVP测试应用。我还制作了一个ViewController来搜索用户。但是现在,一旦单击searchcontroller,我就必须在firebase项目中加载每个用户。这不是很可扩展。 (搜索控制器既显示用户的用户名,也显示个人资料照片。
我有它,因此用户必须至少键入两个单词,然后搜索控制器才能开始在表视图中显示内容。因此,也许一种解决方案是仅在单击时加载用户名,然后仅在显示当前用户时加载个人资料图片?如果是这样,我该如何实现?
{{1}}
答案 0 :(得分:1)
您可以使用queryStartingAtValue:
func searchQueryUsers(text: String, completion: @escaping (_ userNames: [String]) -> Void) {
var userNames: [String] = []
databaseRef.child("profile").queryOrdered(byChild: "username").queryStarting(atValue: text).observeSingleEvent(of: .value, with: { snapshot in
for item in snapshot.children {
guard let item = item as? DataSnapshot else {
break
}
//"name" is a key for name in FirebaseDatabese model
if let dict = item.value as? [String: Any], let name = dict["name"] as? String {
userNames.append(name)
}
}
completion(userNames)
})
}