我已经实现了一个使用以下命令搜索用户的功能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
to 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:
-Marie
首先从处理错误开始。 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
}
}
我希望这有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)