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

问题描述 投票:2回答:2

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

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

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();
  }

不幸的是,它会引发以下错误

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"}

我已将每个客户端的文档存储在一个文件夹中,该文件夹的名称与客户端的uid类似。这只是Firebase生成的ID。我尝试删除该文件夹时收到上述错误。请帮忙,我该怎么办呢?

angular firebase firebase-storage angularfire2
2个回答
3
投票

即使它不在文档中,您也正在使用正确的方法使用AngularFireStorage删除文件。我自己用它,你可以在source files检查它。

好像你的client.uid不是指任何资源。

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


0
投票

我认为更好的方法是通过其下载URL删除文件。要做到这一点,你可以简单地在注入的storage.refFromURL(url).delete()依赖项的实例上调用AngularFireStorage

...
constructor(private storage: AngularFireStorage) { }
...
delete(downloadUrl) {
  return this.storage.storage.refFromURL(downloadUrl).delete();
}
...
© www.soinside.com 2019 - 2024. All rights reserved.