【问题标题】:Delete an entry from firebase realtime database with a click of a button单击按钮从 firebase 实时数据库中删除条目
【发布时间】:2020-01-08 20:07:43
【问题描述】:

我需要有关如何删除 Firebase 条目的帮助

我在 javascript 中有以下代码:

document.getElementById('deleteDriver_btn').onclick = function() {
     firebase.database().ref('drivers').child('driver_num').on('value', function(driverSnapshot) {
     var driverChildSnapshot = driverSnapshot.val();
     var queryRef = firebase.database().ref('drivers').orderByChild('driver_num').equalTo(dataRow);
               queryRef.remove();
     });
};

我收到一条错误消息,提示 queryRef.remove() 不是函数。

Firebase 条目如下:

---driver
     --AKSJDIWDKSADKAWsdak <---- want to delete this and the data underneath
         -driver_num
         -first_name
         -last_name
     --akdjwoajdksafksndjiw <---- want to retain this
         -driver_num
         -first_name
         -last_name

【问题讨论】:

  • 我认为这是因为你的 equalTo 调用返回一个 Query 对象而不是一个 ref firebase.google.com/docs/reference/js/… 所以如果你检查 queryRef 它将是一个 Query 而不是你期望的一个 ref。如果您将.ref 添加到末尾以获取引用本身,然后调用remove 是否有效?例如 queryRef.ref.remove(); 也不是这些看起来像异步操作,所以也许你错过了回调或需要使用 async/await
  • 我尝试了queryRef.ref.remove();,它删除了drivers下的所有孩子。
  • 您可以使用limitToFirst 来获得可能在查询或参考上的第一个结果吗? firebase.google.com/docs/reference/js/…firebase.google.com/docs/reference/js/…
  • 我终于知道如何感谢这些链接。非常感谢!

标签: javascript firebase-realtime-database


【解决方案1】:

好的,感谢@TommyBs 发送的有关参考的提示,我找到了答案。我只是查询以提取密钥,然后启动 .ref().remove()

document.getElementById('deleteDriver_btn').onclick = function() {
       var refe = firebase.database().ref("drivers");
       var diskey = "";

       refe.orderByChild("driver_num").equalTo(dataRow).on("child_added", function(snapshots) 
            {
                diskey = snapshots.key;
            });
       firebase.database().ref("drivers/" + diskey).remove();
};

【讨论】:

    猜你喜欢
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 2018-04-16
    • 2021-06-04
    相关资源
    最近更新 更多