抓住Angularfire2 v5错误

时间:2018-03-31 08:17:28

标签: firebase firebase-storage angularfire5

我正在使用Firebase存储来使用Angularfire2库(目前是v5.0.0-rc.5-next),这意味着我现在正在使用observable而不是promises。

如何捕捉storage/object-not-found等错误并做出相应反应?

这是我目前的代码,但我不能像我找到的一些例子那样添加catch

const avatarRef =  this.afStorage.ref('${userId}/avatar/${this.avatarThumbnail}${user.avatar}');

avatarRef.getDownloadURL()
    .take(1)
    .subscribe((avatarUrl) => {
        resolve(avatarUrl);
    });

2 个答案:

答案 0 :(得分:1)

最基本的是,观察者采用错误回调来接收可观察流中的任何未处理错误。 getDownloadURL()返回Observable,这就是您需要订阅的原因。如果出现错误(找不到文件或其他文件),则只会从错误回调中调用代码。

avatarRef.getDownloadURL()
.take(1)
.subscribe((avatarUrl) => {
    // Do something with avatarUrl here
   console.log(avatarUrl);
}, (error) => {
   // Handle error here
   // Show popup with errors or just console.error
   console.error(error);
});

另外,我建议您阅读有关使用RxJS进行错误处理的文章以及Observable和Promise之间的区别:link1link2

答案 1 :(得分:0)

以下解决方案对我有用

Dockerfile

来源:https://github.com/angular/angularfire/issues/1736#issuecomment-515798352