如何使用 Angularfire2 从 Firebase 存储中删除

Kel*_*uza 9 firebase firebase-storage angularfire2 angular

我基本上是 Angularfire2 的新手,当用户按下删除按钮时,我试图从 Firebase 存储中删除一个文件夹。不幸的是,此类信息不在 Angularfire2文档中

我基本上尝试使用下面的代码:

constructor(private afs: AngularFirestore, private storage: AngularFireStorage) { 
      this.clientsCollection = this.afs.collection('clients', ref => ref.orderBy('uid', 'asc'));;
  }

   deleteClient(client, callback){
    this.storage.ref(client.uid).delete();
  }
Run Code Online (Sandbox Code Playgroud)

不幸的是,它抛出以下错误

FirebaseStorageError {code_: "storage/object-not-found", message_: "Firebase Storage: Object '3CqyNHrIwQ3sRlj83JKM' does not exist.", serverResponse_: "{?  "error": {?    "code": 404,?    "message": "Not Found.  Could not delete object"?  }?}", name_: "FirebaseError"}
Run Code Online (Sandbox Code Playgroud)

我将每个客户的文档存储在一个文件夹中,该文件夹的名称与客户的uid相似。这实际上只是 Firebase 生成的 ID。当我尝试删除该文件夹时出现上述错误。请帮忙,我该怎么办?

Sid*_*era 16

我认为更好的方法是通过下载 URL 删除文件。为此,您可以简单地调用storage.refFromURL(url).delete()注入的AngularFireStorage依赖项的实例。

...
constructor(private storage: AngularFireStorage) { }
...
delete(downloadUrl) {
  return this.storage.storage.refFromURL(downloadUrl).delete();
}
...
Run Code Online (Sandbox Code Playgroud)


Loh*_*eek 3

即使文档中没有,您也可以使用正确的方法使用 AngularFireStorage 删除文件。我自己用的,你可以在源文件中查看。

看来您client.uid没有引用任何资源。

但即使是,你是说“当我尝试删除该文件夹时”,但根据这篇文章, 你无法删除文件夹,你将不得不保留文件列表。