【问题标题】:How do you Delete from Firebase Storage using Angularfire2如何使用 Angularfire2 从 Firebase 存储中删除
【发布时间】:2018-09-22 21:47:13
【问题描述】:

我基本上是 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


    【解决方案1】:

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

    ...
    constructor(private storage: AngularFireStorage) { }
    ...
    delete(downloadUrl) {
      return this.storage.storage.refFromURL(downloadUrl).delete();
    }
    ...
    

    【讨论】:

      【解决方案2】:

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

      您的 client.uid 似乎没有引用任何资源。

      但即使是这样,您是在说“当我尝试删除该文件夹时”但根据this post 您无法删除文件夹,您必须保留文件列表。

      【讨论】:

        【解决方案3】:

        您可以列出文件夹内的所有项目,然后将它们一一删除,空文件夹将被自动删除!

        let folderPath = 'path/to/folder';
        
        this.storage.storage.ref(folderPath).listAll().then(data => {
          data.items.forEach(item => {
            this.storage.storage.ref(item['location']['path']).delete()
          });
        })
        

        【讨论】:

        • this.storage.storage.ref(folderPath).listAll().then(data => { data.items.forEach(item => { item.delete() }); })
        • 谢谢。这有帮助。虽然 item.delete();删除也够了。
        猜你喜欢
        • 2019-06-03
        • 2018-03-12
        • 2019-09-02
        • 2017-08-13
        • 1970-01-01
        • 2021-02-01
        • 2022-01-02
        • 1970-01-01
        • 2018-05-23
        相关资源
        最近更新 更多