You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native使用refFromURL删除Firebase图片报Promise异常如何解决

React Native Firebase存储图片删除报错解决方案

核心问题解答

删除Firebase Storage存储文件时可以直接使用上传时返回的downloadURL,官方提供的refFromURL()方法原生支持传入完整下载URL获取文件引用,该用法是合法的。

报错原因

你遇到的Possible Unhandled Promise Rejection警告是初始代码的逻辑错误导致的,和downloadURL本身的合法性无关:

  • Firestore的doc.delete()方法执行成功后,回调返回的结果不是被删除文档的快照,无法调用.data()方法读取字段,这里直接抛出了未被捕获的异常
  • 即使删除操作能返回快照,文档已经被你提前删除,也无法读取到存储的downloadURL字段
  • 初始代码中存储删除失败的分支仅打印日志没有调用reject(),也可能导致Promise状态异常

初始错误代码

export function deleteBoards(item) {
  return (dispatch, getState) => {
    return new Promise((resolve, reject) => {
      firebase
        .firestore()
        .collection('coachboards')
        .doc(auth().currentUser.uid)
        .collection('userCoachboards')
        .doc(item.id)
        .delete()
        .then((snapshot) => {

          //Here I try to delete the image from firebase storage
          storage()
           .refFromURL(snapshot.data().downloadURL.url)
           .delete()
            .then(function () {
              resolve();
            })
            .catch(function (error) {console.log(error)});
        })
        .catch(() => {
          reject();
        });
    });
  };
}

修正后正确代码

你调整后的写法是正确的,直接从已经加载到内存的item参数中读取提前存储好的downloadURL,不需要再从Firestore查询数据:

export function deleteBoards(item) {
  return (dispatch, getState) => {
    return new Promise((resolve, reject) => {
      firebase
        .firestore()
        .collection('coachboards')
        .doc(auth().currentUser.uid)
        .collection('userCoachboards')
        .doc(item.id)
        .delete()
        .then(() => {
          //Here I try to delete the image from firebase storage
          storage()
            .refFromURL(item.downloadURL)
            .delete()
            .then(() => {
              resolve();
            })
            .catch(error => {
              reject();
            });
        })
        .catch(() => {
          reject();
        });
    });
  };
}

内容的提问来源于stack exchange,提问作者Alexander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:06:03