我已经实现了一个使用 FirebaseDatabase
搜索用户的功能:
REF_USERS.queryOrdered(byChild: "username_lowercase").queryEnding(atValue: text+"\u{f8ff}").queryLimited(toFirst: 25).queryStarting(atValue: text).observeSingleEvent(of: .value, with:
{
(snapshot) in
snapshot.children.forEach(
{
(s) in
let child = s as! DataSnapshot
if let dict = child.value as? [String: Any]
{
let user = UserInfo.createUser(dict: dict, key: child.key)
if user.id! != currentUserId
{
completion(user)
}
}
})
})
但现在我决定从 Database
切换到 Firestore
并且因为他们一直在吹嘘他们的查询很棒,我认为这应该不会太难但是几天来,我一直在努力弄清楚如何搜索用户,但似乎无法完成。
这就是我目前的代码:
REF_USERS.order(by: "username_lowercased").limit(to: 25).order(by: text).getDocuments
{
(snapshot, error) in
snapshot?.documents.forEach(
{
(s) in
let child = s
let user = UserInfo.createUser(dict: child.data(), key: child.documentID)
if user.id! != currentUserId
{
completion(user)
}
})
}
但就像我说的,没有什么是真正有效的。
有什么建议吗?我真的很感激 c:
-玛丽
最佳答案
首先从处理错误开始。 Firestore 中的错误非常具有描述性,它们将指导您需要做什么才能使您的查询正常工作。
guard let snapshot = snapshot else {
// Make your completion handler work with errors as well so you can read / display them
// completion(nil, error)
// For now just print the error
print(error!)
return
}
此外,如果您想在满足条件时调用成功完成处理程序,我建议您只使用 for 循环并在需要时中断:
for document in snapshot.documents {
if user.id! != currentUserId {
completion(user)
break
}
}
希望对您有所帮助。
关于Swift Firestore 搜索用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53562247/