使用异步等待Firebase存储

时间:2019-01-14 21:09:24

标签: angular typescript firebase firebase-storage

在执行任何操作之前,我需要等待文件上传。

我开发了以下代码,但无法获得downloadURL;

我想使用异步方法获得downloadURL来获得良好的代码。

我检查了图片,上传图片时没有错误,因为图片正常上传,但是上传后我收不到downloadURL

auth.service.ts

async changeUserAvatar(avatar: any): Promise<firebase.storage.UploadTaskSnapshot> {
    try {
        let storageRef = firebase.storage().ref();
        return await storageRef.child(`avatars/${this.userLogged.uid}`).put(avatar);
    } catch (error) {
        alert(error);
    }
}

my-component.ts

saveUser(): void {
    this.chekcUserAdmin()
        .pipe(takeUntil(this._unsubscribeAll))
        .subscribe(async (user: any) => {
            if (!user.admin) {

                const upload = await this._authService.changeUserAvatar(this.avatarUpload);

                // #FIX-ME
                // The upload.downloadURL here is coming undefined;
                user.avatar = upload.downloadURL; 
                await this.updateUser(user);

                alert('User saved!');
            }
        });
}

1 个答案:

答案 0 :(得分:1)

您必须使用await upload.ref.getDownloadURL()才能检索URL。您可以找到一些示例in the Firebase documentation