AngularFire FirebaseStorage 回调不能从快照方法工作

Posted

技术标签:

【中文标题】AngularFire FirebaseStorage 回调不能从快照方法工作【英文标题】:AngularFire FirebaseStorage Callback not working from snapshot method 【发布时间】:2019-03-25 01:15:27 【问题描述】:

没有错误我只想检查回调是否有效。但事实并非如此。 这是针对 AngularFireStorage 的,上传图片后,我打算获取 downloadURL,但问题是,可观察的管道不起作用,我也尝试使用 tap 但没有运气。

这是代码

    const path = `hospital/$new Date().getTime()_$file.name`;

const customMetadata =  app : 'PROV-H meta';

const ref = this.storage.ref(path);

this.task = ref.put(file,customMetadata);


this.percentage = this.task.percentageChanges();

this.snapshot = this.task.snapshotChanges().pipe(
  finalize(()=>
    console.log("percent finalize");
  )
);

这是来自控制台的日志。

XHR finished loading: GET "http://localhost:4200/sockjs-node/info?t=1540028075438".

zone.js:2969 XHR 完成加载:OPTIONS "https://firebasestorage.googleapis.com/v0/b/prov-h-fae96.appspot.com/o?name=hospital%2F1540028079723_caps.png"。

只是一堆。没有错误。

有没有其他方法可以获取 downloadUrl 路径?

仅供参考,如果我无法使回调起作用,我就无法订阅 downloadURL。

 this.snapshot = this.task.snapshotChanges().pipe(
  finalize(()=>
    console.log("percent finalize"); //THIS IS NOT GETTING CALLED;
  )
);

【问题讨论】:

你需要像pipe(finalize(...)).subscribe()一样订阅才能触发惰性进程。 【参考方案1】:

这样做:

this.snapshot = this.task.snapshotChanges().pipe(
 finalize(()=>
   console.log("percent finalize");
   )
 );
 this.snapshot.subscribe(
  res => 
    console.log(res);
  , err => 
    console.log(err);
  
);

【讨论】:

以上是关于AngularFire FirebaseStorage 回调不能从快照方法工作的主要内容,如果未能解决你的问题,请参考以下文章

将 FirebaseUI 与 AngularFire2 一起使用

引导模式 + Angularfire2

Angularfire 2 和 Ionic 2

Angularfire2 基于角色的授权,支持页面刷新

使用 angularfire2 时如何访问本机 Firebase 对象?

angularfire2:未启用 Cloud Firestore API