使用 setData 时 Firebase 显示警告:考虑使用异步替代函数

问题描述 投票:0回答:1

有人知道为什么 firebase 显示此警告:

Consider using asynchronous alternative function
当我使用以下代码时:

class UserServices {
    
    private let db = Firestore.firestore()
    private var doesUserIdExists = false
    
    static let shared = UserServices()
    
    func checkUsernameAvailability(newUsername: String, doesExists: @escaping (Bool) -> ()) async throws {
        db.collection("usernames").getDocuments { querySnapshot, error in
           if let error {
               doesExists(true)
               print("Error getting users documents. Error: \(error)")
           } else {
               if let querySnapshot {
                   var usernames: [String] = []
                   for document in querySnapshot.documents {
                       let id = document.documentID
                       usernames.append(id)
                   }
                   doesExists(usernames.contains(newUsername))
                
               } else {
                   doesExists(false)
               }
           }
       }
    }
}

我认为这是一个非常简单的函数,如果我使用

await
,它会显示没有异步调用的警告,因此不需要它。尽管警告让我感到压力很大,但代码仍按预期工作。我对 Swift 世界还很陌生, 任何帮助表示赞赏。我见过其他类似的问题,但没有解决方案。

swift firebase google-cloud-firestore
1个回答
0
投票

我把这个:

    docRef.setData(docData) { error in
        if let error = error {
            print("Error writing document: \(error)")
        } else {
            print("Document successfully written!")
        }
    }

进入此:

    Task {
        do {
            try await docRef.setData(docData)
        }
        catch {
            print(error)
        }
    }

“考虑使用异步替代函数”警告不再显示

© www.soinside.com 2019 - 2024. All rights reserved.