首页 > 解决方案 > Firebase 存储 API 触发两次

问题描述

我正在尝试使用 Google Firebase 存储 API 存储我的文件,但管道被执行了两次。有什么想法让它只触发一次吗?

// def
task: AngularFireUploadTask;
storage: AngularFireStorage;

// code
this.task = this.storage.upload(path, file, { customMetadata });
    return this.task.snapshotChanges().pipe(
        map(doc => {
            console.log('me'); // THIS IS PRINTED TWICE
            return doc;
        })
    );

标签: firebaserxjsfirebase-storageangularfire2angular-observable

解决方案


根据文档,您可以预期管道将在上传过程中收到多个快照。随着时间的推移,这些快照中的每一个都包含有关上传状态的一些信息。

如果您只想知道上传何时完成,请从文档中的示例中获取代码,该代码会在上传完成后获取下载 URL:

task.snapshotChanges().pipe(
    finalize(() => this.downloadURL = fileRef.getDownloadURL() )
)

推荐阅读