2017-02-21 44 views
2

在我的Android應用程序,我使用客戶端扇出同時上傳數據到數據庫中的多個地方,以避免例如在互聯網連接丟失的情況下的問題。以下是來自Firebase博客的示例代碼:上傳到數據庫和存儲在同一時間在Firebase

Map updatedUser = new HashMap(); 
newPost.put("name", "Shannon"); 
newPost.put("username": "shannonrules"); 

Firebase ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/"); 

Map fanoutObject = new HashMap(); 
fanoutObject.put("https://stackoverflow.com/users/1", updatedUser); 
fanoutObject.put("/usersWhoAreCool/1", updatedUser); 
fanoutObject.put("/usersToGiveFreeStuffTo/1", updatedUser); 

ref.updateChildren(fanoutObject); // atomic updating goodness 

但是現在我還想將圖像文件上傳到存儲器中以及該數據。這是可能的同時做到這一點嗎?

+0

正如Cedric回答的,無法在單個操作中寫入多個Firebase功能。 –

回答

2

我不認爲您可以將呼叫同步到Firebase數據庫和存儲。文檔沒有提及任何地方。

但您也知道:如果由於丟失連接而導致無法發送,則Firebase將在緩存中保存由updateChildren()所做的任何請求。當用戶重新連接時,Firebase將按照與保存的順序相同的順序發送所有緩存的請求。

0

同時執行這兩個任務的一種方法將首先確定您在Storage中的文件路徑,並啓動上傳,然後使用該文件路徑更新數據庫。這與你會得到的一樣好。

但是,大多數情況下,您希望將上載文件的「下載URL」存儲在數據庫中,而不是存儲分區中的路徑。這使得客戶可以更輕鬆地直接訪問內容,而無需首先「查找」下載URL。在這種情況下,您確實需要先等待存儲上傳完成,從UploadTask獲取下載URL,然後使用該字符串更新數據庫。在上傳完成之前,您無法知道下載URL

相關問題