Ionic Firebase无法下载URL?

igetnqfo  于 2023-01-15  发布在  Ionic
关注(0)|答案(1)|浏览(119)

我有一个包含以下代码的服务类型脚本文件

export class FirebaseService {
  constructor(private afs: AngularFirestore, private storage: AngularFireStorage) {}

  uploadFile(file: any) {
    const filePath = 'path/to/save/file';
    const fileRef = this.storage.ref(filePath);
    const task = this.storage.upload(filePath, file);
    return task.snapshotChanges().pipe(
      finalize(() => {
        return fileRef.getDownloadURL()
      })
    ).toPromise();
  }

  createDocument(collection: string, name: string, file: any) {
    this.uploadFile(file).then(downloadURL => {
      if (downloadURL) {
        const data = {
          title: name,
          downloadURL: downloadURL
        };
        this.afs.collection(collection).add(data);
      } else {
        console.log("downloadURL is not defined.");
      }
    });
  }
}

在我的组件中,我有以下代码

export class CreatePage implements OnInit {
  name = ""

  file: any;

  onFileChanged(event: any) {
    this.file = event.target.files[0];
  }
  onSubmit() {
    console.log(this.file)

    this.firebaseService.createDocument(this.selectedOption, this.name, this.file)

    this.name = "", this.selectedOption = ""
  }
}

HTML看起来像这样:

<ion-item>   <input type="file"  (change)="onFileChanged($event)"> </ion-item>

如何解决此问题?错误消息如下所示:
错误代码:9095 ERROR错误代码:未被抓住的(承诺中的):Firebase错误:[代码=无效参数]:使用无效数据调用了函数addDoc()。不支持的字段值:未定义(在文档freunde/lcAwFcHvQSo5iV6ExQPi的字段downloadURL. metadata. cacheControl中找到)
它会将图像上传到存储器,但不会将下载的url上传到firebase firestore。

fafcakar

fafcakar1#

调试步骤1。

使代码准确显示要发送到Firebase的内容。将console.log更改为三个console.log

console.log("this.selectedOption = ",JSON.stringify(this.selectedOption,null,2))
console.log("this.name = ",JSON.stringify(this.name,null,2))
console.log("this.file = ",JSON.stringify(this.file,null,2))

在您的问题中显示上面的确切输出

这将使我们发现问题的机会最大化。
例如,在上面的代码中,我看不到this.selectedOption是在哪里创建的。

相关问题