一旦他們通過 firebase auth 登錄,我想使用 Firestore 來檢索鏈接到該用戶的用戶資訊和其他資料。在我使用的應用程式主頁上.onAppear{ pulluserData() }。我知道 Firestore 函式是異步的,所以在主螢屏上顯示給用戶之前,我如何等待這些資料被拉取?
這是我檢查資料庫的功能:
func checkDatabase() async {
//Function that will check the database. Will be good to add a listener eventually
if self.pullUserData{
await dbm.readUser(userID: "VSWAq7QCw3dbGYwMdtClbbANGVe2")
}
}
和實際的資料庫功能:
func readUser(userID: String)async{
//Function that will be used to read user info from the database
let userRef = database.collection("users")
do{
let doc = try await userRef.document(userID).getDocument().data()
print("The doc is: ")
print(doc as Any)
}
catch {
}
}
uj5u.com熱心網友回復:
有很多方法可以做到這一點,但最常見的兩種方法是 (1) 使用啟動螢屏來指示加載狀態,該狀態消失到與啟動螢屏相同的視圖(以繼續加載的外觀)資料庫回傳時洗掉(即 Twitter);(2) 將用戶權限加載到應用程式中,并允許他們在指示資料正在加載或顯示快取資料的同時自由移動。
請記住,Firestore 在設備上維護本地快取,這意味著應用啟動時資料將立即可用。此資料可能與服務器不同步,但一旦應用與 Firestore 建立連接(通常是即時連接),它就會更新。我的建議是在不使用加載螢屏的情況下將用戶直接啟動到應用程式中,并依靠快取的資料盡快啟動 UI。
如果我們只討論特定于用戶的資料(用戶可以完全控制的特定于用戶的資料),那么該資料只會在用戶更改它時才會更改,這將是他們最后一次使用app,這意味著他們設備上的本地快取資料(假設他們只使用一臺設備)將始終反映服務器的狀態(理論上,無論如何)。如果沒有,那就沒有;無論如何,新資料將立即更新。
然后您可能想知道如果用戶在沒有連接的情況下啟動應用程式會發生什么。在這種情況下,會顯示快取的資料,而用戶幾乎一無所知。由于 Firestore 具有離線功能,用戶可以自由編輯他們的資料,并在最終建立連接時寫入服務器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/369153.html
標籤:迅速 火力基地 异步 谷歌云firestore 迅捷
上一篇:如何在node.js中使用axios回圈多個http請求
下一篇:異步加載串列時影片中的錯誤
