我有一个发布对象,该对象包含两个部分:(1)照片和(2)视频。在发布流程中,用户选择并成像,然后在他们选择视频的下一个屏幕旁边点击。照片和视频都作为发布对象的一部分上传到Firebase。参见简单设计。
线框设计
我很难同时创建带有照片URL和视频URL的post对象。我尝试过:
1-选择照片并转到下一步后,我将照片上传到Firebase存储,并在数据库中创建带有照片URL和视频URL空字符串的post对象。
2-然后选择视频后,我将视频上传到Firebase存储,并尝试使用视频URL更新现有的post对象...
但是,我无法更新正确的帖子对象,并且不知道如何获取postByAutoID来更新正确的帖子。
这是数据库对象的样子:
我试图将photoURL传递到帖子的第二部分,但是在传递变量时,URL的上传和生成还没有完成。
感谢您的帮助!
答案 0 :(得分:0)
使用Web或JavaScript,将上载到Firebase云存储返回承诺,因此Promise.all
包含一系列单独的上载。
对于Swift或IOS,您将必须将每个上载(.putData
)推送到内存,然后对其进行迭代/循环。
请参见Upload Files on iOS,其中提供了一个起点并添加了循环/迭代。
// Data in memory let data = Data() // Create a reference to the file you want to upload let riversRef = storageRef.child("images/rivers.jpg") // Upload the file to the path "images/rivers.jpg" let uploadTask = riversRef.putData(data, metadata: nil) { (metadata, error) in guard let metadata = metadata else { // Uh-oh, an error occurred! return } // Metadata contains file metadata such as size, content-type. let size = metadata.size // You can also access to download URL after upload. riversRef.downloadURL { (url, error) in guard let downloadURL = url else { // Uh-oh, an error occurred! return } } }