在执行任何操作之前,我需要等待文件上传。
我开发了以下代码,但无法获得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!');
}
});
}
答案 0 :(得分:1)
您必须使用await upload.ref.getDownloadURL()
才能检索URL。您可以找到一些示例in the Firebase documentation。