【问题标题】:How to remove any firebase data using JavaScript?如何使用 JavaScript 删除任何 firebase 数据?
【发布时间】:2018-02-18 11:58:00
【问题描述】:

我正在使用 JavaScript 和 firebase 构建一个 Web 应用程序。

每次点击“删除”段落标签时,只能删除最近添加的项目,不能删除其余的。

示例:如果我有 9 个项目,而我刚刚添加了第 10 个项目,我只能删除第 10 个项目,而不能删除其他 9 个项目。我基本上只能按倒序移除项目,而不是能够以我选择的任何顺序移除项目。

这是我的代码:

function displayFav(){
  const dbRef = firebase.database().ref();
  dbRef.on("value", (firebaseData) => {
   
   // empty out element before adding new updated firebase data so there are no repeated data
 document.getElementById("displayUsername").innerHTML = "";
 
    let accounts = [];
    const accountData = firebaseData.val();
    
    for (let itemKey in accountData) {
      accountData[itemKey].key = itemKey;
      accounts.push(accountData[itemKey])
      
      const key = accountData[itemKey]["key"];
      const password = accountData[itemKey]["password"];
      let user = accountData[itemKey]["username"];

  // code where I try to render results from page
   document.getElementById('displayUsername').innerHTML += `
      <li> Username: ${user} Password: ${password}</li>
      <p id=${key}>Remove</p>
      `;
      
    // code where I try to remove the item 
     document.getElementById(key).addEventListener("click", function(){
        removeItem(key)
      })
 
      }
    });
  }

这是我删除 firebase 数据的功能:

function removeItem(itemToRemove){
   const dbRef = firebase.database().ref(`${itemToRemove}`);
  dbRef.remove();
};

我可以更改或添加什么到我的代码中,以允许我按我想要的任何顺序删除项目,而不是让我只删除最近的项目?

【问题讨论】:

    标签: javascript html api firebase


    【解决方案1】:

    不要试图粗鲁,这只是一个提示:请缩进/格式化您的代码,以便人们可以理解它而无需自己格式化。通常,当人们看到格式不正确的大代码时,就会把他们赶走(有时包括我),因此他们不想继续阅读或帮助您解决问题。

    假设您有一个名为posts 的表,其结构如下所示:

    即:

    {
        <postId>: {
            date: 1518925839059,
            message: 'some message'
        },
        <postId>: {
            date: 151892583967,
            message: 'some message'
        },
        ...
        ...
    }
    

    假设你要删除第一个帖子的extra属性,如图中圈出来的,你必须知道数据的完整路径:

    firebase.database().ref('posts/-L5b1EZ1L_FycluzTIn8/extra').remove();
    

    如果你想删除post 1中的所有内容:

    firebase.database().ref('posts/-L5b1EZ1L_FycluzTIn8').remove();
    

    或者,如果您想删除每个帖子:

    firebase.database().ref('posts').remove();
    

    【讨论】:

      猜你喜欢
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多