React Native:使用“refFromURL”从firebase中删除图像

Posted

技术标签:

【中文标题】React Native:使用“refFromURL”从firebase中删除图像【英文标题】:React Native: Delete Image from firebase with "refFromURL" 【发布时间】:2021-11-05 12:49:19 【问题描述】:

我尝试从 Firebase 中删除图像。我认为问题在于我没有得到 URL。刷新平面列表后,我收到以下警告:

"可能的未处理承诺拒绝 (id: 1): 对象 "

仅当我在删除项目后刷新平面列表时才会显示此警告。

“downloadURL”是我将图像上传到 Firebase 时下载的 URL。是我应该尝试获取的那个 URL 还是我错了?

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


更新结果✅

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

【问题讨论】:

【参考方案1】:

正如错误文本所说,如果delete 失败,您没有处理错误情况。尝试在那里添加一个reject()

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
          firebase.storage()
           .refFromURL(item.downloadURL)
           .delete()
            .then( () => 
              resolve();
            )
            .catch((error) => 
                reject()
            );
        )
        .catch(() => 
          reject();
        );
    );
  ;

您能否也记录下这个snapshot.data().downloadURL.url 值以查看它是否正确。

也不应该是firebase.storage() 而不仅仅是storage()

【讨论】:

感谢您的回复!嗯,当然,我的坏!但它仍然给我同样的错误/警告。如果我在顶部控制台登录console.log(item.downloadURL);,它会给我正确的URL,但如果我尝试显示此代码.refFromURL(snapshot.data().item.downloadURL),我也尝试了.refFromURL(item.downloadURL)。如果我控制台日志snapshot.data().downloadURL.url 没有显示。 你能告诉我items 是什么吗?你有没有在数据库中作为json 的屏幕截图。如果您使用item.downloadURL 获得downloadURL,我建议您直接使用它,而不是从snapshot 获得。我会更新答案 现在可以了,感谢您的帮助。我用工作结果更新了我的问题。但是,我将 firebase.storage 更改为 storage() 然后它就可以工作了。 对不起,我改变了它,因为我认为这也是一个错误。很高兴听到它起作用了:)

以上是关于React Native:使用“refFromURL”从firebase中删除图像的主要内容,如果未能解决你的问题,请参考以下文章

在另一个 React-Native 库中使用 React-Native 库

更新 react-native 后无法使用 react-native-debugger

React Native 速成 002 — 使用 UI框架 React Native Elements

React Native:对原生依赖使用自动链接“react-native-maps”

在 expo 中运行使用 react-native-cli 创建的 react-native 应用程序

使用 React-native-ble-plx 配置 React-native