Swift Firestore 搜索用户

标签 swift firebase search google-cloud-firestore querying

我已经实现了一个使用 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/

相关文章:

swift - 如何从 Any 类型中解包一个可选值?

ios - UICollectionView 粘性补充 View

jquery - 调整 jQuery 表搜索

search - 谷歌和必应搜索使用哪些元标记

ios - AVPlayer 和 AVPlayerItem 状态什么时候改变?

ios - 如何从 modalVC 中删除 VC 1 中的 tableView 行?

firebase - 删除用户后,Firebase身份验证未吊销?

reactjs - 电影预告片 npm 在我的 Netflix 克隆项目中无法正常工作

php - 如何从 laravel 中的多维 json 数组中获取值

javascript - 如何在字符串中查找某些单词?