在我的Android应用程序中,我使用客户端扇出同时将数据上传到数据库中的多个位置,以避免出现问题,例如在连接丢失的情况下。以下是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("/users/1", updatedUser);
fanoutObject.put("/usersWhoAreCool/1", updatedUser);
fanoutObject.put("/usersToGiveFreeStuffTo/1", updatedUser);
ref.updateChildren(fanoutObject); // atomic updating goodness
但是现在我还希望将图像文件与数据一起上传到存储区。是否可以同时做到这一点?
答案 0 :(得分:2)
我认为您无法同步对Firebase数据库和存储的调用。文档没有在任何地方提到它。
但您知道:如果由于连接丢失而无法发送updateChildren()
,则Firebase会保存Public Class myItem
Dim TS as DateTime
End Class
Public myList as ObservableCollection(Of myItem)
中的所有请求。当用户重新连接时,Firebase将按照保存的顺序调度所有缓存的请求。
答案 1 :(得分:0)
执行这两个任务并发的一种方法是先在Storage中确定文件路径,然后启动上传,然后再使用该文件路径更新数据库。这和你一样好。
但是,大多数情况下,您希望将上载文件的“下载URL”存储在数据库中,而不是存储桶中的路径。这使客户端可以更轻松地直接访问内容,而无需先“查找”下载URL。在这种情况下,您确实需要等待存储上载首先完成,从UploadTask获取下载URL,然后使用该字符串更新数据库。 上传完成之前,您无法知道下载网址。