簡體   English   中英

Firebase在ref上調用.remove()會刪除所有父級

[英]Firebase calling .remove() on ref is removing all parents

在以下代碼中,在處理了快照中返回的數據之后,我正在嘗試刪除有問題的記錄。 當我通過子方法附加記錄的鍵對引用進行調用remove時,所有父節點都將被移除,直到FB應用程序的根。 我懷疑這是我的代碼中的錯誤。 希望能提供任何幫助。

var Firebase = require('firebase');
var config = require('./config.json');
var fbRef = new Firebase(config.firebaseEndpoint + "/messages");
var messenger = require('./messenger.js');

fbRef.on('value', function (snap) {

//If Data is returned convert payload to array.
//pass each mesaage into messenger and upon completion delete the
// firebase record
if (snap.exists()) {

    var payload = snap.val();
    var keys = Object.keys(payload);

    keys.forEach(function (key) {

        var msg = payload[key];

        messenger(msg, function (msgErr, msgData) {
            if (!msgErr) {

                fbRef.child(key).remove();
            }
            else {
                console.log(msgErr);
            }
        });
     });
   }
});

很難確定沒有看到您的JSON結構(提示:將其作為文本添加到您的問題中),但是我認為您可能會誤解Firebase的運行方式。

Firebase將值存儲在路徑標識的位置。 將值存儲在某個位置時,將自動創建路徑。 當您從某個位置刪除最后一個值時,路徑將自動刪除。

除此之外,這段代碼更慣用了:

fbRef.on('value', function (snap) {
  if (snap.exists()) {
    snap.forEach(function(msgSnap) {          
      var msg = msgSnap.val();
      messenger(msg, function (msgErr, msgData) {
        if (!msgErr) {
          msgSnap.ref().remove();
        }
        else {
          console.log(msgErr);
        }
      });
    });
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM