如何从 Firebase 实时数据库中删除一些数据?

Posted

技术标签:

【中文标题】如何从 Firebase 实时数据库中删除一些数据?【英文标题】:How can I delete some data from Firebase Realtime Database? 【发布时间】:2021-09-20 19:26:32 【问题描述】:

我有这个功能来保存和获取数据: 保存:

try 
        const request = new Request('https://yandexmap-96969-default-rtdb.firebaseio.com/locations.json', 
        method: 'post',
        body: JSON.stringify(addNewLocation)
            )
        const response = await fetch(request)
        window.location.reload()
        return await response.json()
     catch (error) 
        alert('Try again: ', error)
        

//to get:

try 
        const request = new Request('https://yandexmap-96969-default-rtdb.firebaseio.com/locations.json',  method: 'get')
        const response = await fetch(request)
        return await response.json()
     catch (error) 
        alert('Try again: ', error)
    

当我使用“delete”而不是“get”时,它会完全删除位置文件夹,但是当我在链接末尾使用带有键的链接时,会出现错误

【问题讨论】:

您好,如果我的回答对您有帮助,您可以点击对勾图标接受。 What should I do when someone answers 否则请随时询问更多问题。 【参考方案1】:

你可以使用remove方法

let userRef = this.database.ref('users/' + userId);
    userRef.remove()

【讨论】:

tip : 添加代码围栏可以突出显示代码并使其更好地阅读(尤其是如果您有很多代码)【参考方案2】:

您需要在您需要删除的位置发出DELETE 请求。

curl -X DELETE \
  'https://[PROJECT_ID].firebaseio.com/locations.json'
const request = new Request('https://yandexmap-96969-default-rtdb.firebaseio.com/locations.json',  method: 'DELETE')
const response = await fetch(request)
return await response.json()

我不确定您的数据库结构如何,但上述请求将删除整个“位置”节点。这是一个例子:

如果您只想删除location2,请在https://[PROJECT_ID].firebaseio.com/locations/location2.json 提出删除请求

我不确定您是否有任何特定原因需要使用 REST API,但您可以尝试使用 Firebase Web SDK。比较好用,比如删除location2:

firebase.database().ref("locations/location2").remove()

【讨论】:

非常感谢。我忘了在链接末尾添加“.json”【参考方案3】:

可以使用下面的代码

deleteSomeData(id) 
      fetch(
         // don't add .json at [data Name]
        `https://[your FireBase project url]/[data Name (don't add .json)]/$id.json`,
        
          method: 'Delete',
          headers: 
            'Content-Type': 'application/json',
          ,
        
      )
        .then((response) => 
          if (response.ok) 
               // if sucess do something
           else 
               // if fail throw error
            throw new Error('could not delete data');
          
        )
        .catch((error) => 
          this.error = error.message;
          console.log(id);
        );
    ,

【讨论】:

以上是关于如何从 Firebase 实时数据库中删除一些数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 firebase 实时数据库中删除我的数据?

从 UI 和 Firebase 实时数据库中删除 CardView 数据?

使用 android studio java Recycler 视图从 Firebase 实时数据库中删除一个节点

如何从 Firebase 实时数据库中检索/获取项目

Flutter - 从特定值中删除数据,Firebase 实时数据库 [重复]

当从实时数据库中删除对象时,Firebase 函数(用 NodeJS 编写)从 Cloud Storage 中删除文件