Android Firestore,等待所有文件上载到存储,然后保存

Android Firestore,等待所有文件上载到存储,然后保存,android,firebase,google-cloud-firestore,firebase-storage,Android,Firebase,Google Cloud Firestore,Firebase Storage,我正在尝试将带有附件的文档(一个文件和一个图像都保存在存储中)保存到Firestore中。只需使用图像或文件,我就可以保存文档,将图像添加到addOnCompleteListener中。但当两者同时存在时,我就陷入了困境 这就是我所做的: //Create document to be saved docRef = db.collection("messages").document(); docRef.set(message).addOnCompleteListener(

我正在尝试将带有附件的文档(一个文件和一个图像都保存在存储中)保存到Firestore中。只需使用图像或文件,我就可以保存文档,将图像添加到addOnCompleteListener中。但当两者同时存在时,我就陷入了困境

这就是我所做的:

//Create document to be saved

docRef = db.collection("messages").document();
docRef.set(message).addOnCompleteListener(task-> {
   if(task.isSuccessful() {

      //uploading image to Storage
      if(imageBytes != null {
        mStorageRef.child("image.jpg").putBytes(imageBytes)
            .addOnSuccessListener(taskUpload -> {
                taskUpload.getStorage().getDownloadUrl().addOnSuccessListener(uri -> {
                    message.setPhotoUrl(uri.toString());
                    
                    //cannot add file upload here because if image is null, it will not be saved.

                });
            });


   }
 });

如果我尝试在映像之后保存文件,那么会出现问题,因为它是异步的

更新 我想实现的是:

  • 创建文档引用
  • 将图像和/或文件保存到Firebase存储
  • 将图像和/或文件信息附加到文档
  • 将文档引用保存到Firestore

  • 我不明白你在评论中说“如果图像为空”是什么意思。什么是空的?此外,代码中似乎有语法错误。你是直接从你的应用程序复制的吗?@DougStevenson让我们假设用户没有上传图像,只是上传一个文件。我无法将文件上载放在Images的onCompleteListener中