使用React.js删除Firebase实时数据库中的文件。

3

这是数据库链接

const firebase = "https://booktakeaway-dd150-default-rtdb.europe-west1.firebasedatabase.app"

这是我用来删除文件的函数,但它不起作用。我在网上找不到任何信息。
return async dispatch => {
    try {
      const response = await firebase.get(`booksData.json?auth=${token}`);
      const firebaseData= response.data;
      for (let key in dataFirebase) {
        if (id === firebaseData[key].bookId) {
          await firebase.ref(`/booksData/${key}`).remove();
          console.log("Done");
        }
      }
      await dispatch(getSavedBooksIDs());
    } catch (error) {
      console.log(error);
    }
  };

Structure of the databse


1
第二段代码片段中使用的 firebase 变量是什么?尽管名称相同,但它似乎与第一段代码片段中的不同,并且它也不像我所知道的任何 SDK/库。 - Frank van Puffelen
是的,它是相同的,但是它是从另一个组件导入的,我用它很多次来读取和添加一些文件。 - Valerio Battilà
我可能在这里缺少一些基础知识,但是你如何在字符串上调用 get()ref() 函数呢? - Frank van Puffelen
我是一个初学者,很抱歉,可能我使用了错误的引用方式,应该怎么做呢? - Valerio Battilà
我不知道你在尝试使用什么。第二个代码片段似乎部分尝试使用Firebase SDK,如firebase.ref(/booksData/${key}).remove(),但是await firebase.get(booksData.json?auth=${token})和第一个代码片段中的const firebase = "https://booktakeaway-dd150-default-rtdb.europe-west1.firebasedatabase.app"都似乎是REST API。如果我们不知道你正在使用哪个API/SDK,很难提供帮助。 - Frank van Puffelen
1个回答

0
你可以尝试将它设为null,这对我有用:
return async dispatch => {
    try {
      const response = await firebase.get(`booksData.json?auth=${token}`);
      const firebaseData= response.data;
      for (let key in firebaseData) {
        if (id === firebaseData[key].bookId) {
          await firebase.ref(`booksData/${key}`).set(null);
          console.log("Done");
        }
      }
      await dispatch(getSavedBooksIDs());
    } catch (error) {
      console.log(error);
    }
  }; 

我可能使用了错误的引用方式,应该怎么做? - Valerio Battilà
我会在几分钟内给你发送我的代码片段。 - mpmcintyre
抱歉,需要明确将其设置为 null:firebase.ref(path).set(null).then(callback()).catch(); - mpmcintyre
我只获取文件的密钥。 - Valerio Battilà
抱歉,您应该像这样删除第一个斜杠:await firebase.ref(\booksData/${key}`).set(null);` - mpmcintyre
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接