【问题标题】:React Native: Delete Image from firebase with "refFromURL"React Native:使用“refFromURL”从firebase中删除图像
【发布时间】: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();
        });
    });
  };
}

【问题讨论】:

    标签: firebase react-native firebase-storage


    【解决方案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() 然后它就可以工作了。
    • 对不起,我改变了它,因为我认为这也是一个错误。很高兴听到它起作用了:)
    猜你喜欢
    • 2019-07-16
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 2018-01-14
    • 2017-05-12
    • 1970-01-01
    相关资源
    最近更新 更多