2016-04-06 1 views
0

В следующем коде после обработки данных, возвращенных в моментальном снимке, я хочу удалить эту запись. Когда я вызываю remove по моей ссылке с ключом записи, добавленной через дочерний метод, все родительские узлы удаляются до корня приложения FB. Я подозреваю, что это ошибка в моем коде. Буду признателен за любую помощь, которая может быть оказана.Firebase call .remove() on ref удаляет всех родителей

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); 
      } 
     }); 
    }); 
    } 
}); 

ответ

1

Это трудно быть уверенным, не видя структуры 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); 
     } 
     }); 
    }); 
    } 
}); 
+0

Frank спасибо за это. Вы определили пробел в моих знаниях, поскольку я не понимал, что путь удален вместе с последним ребенком. Кроме того, спасибо, что указали на forEach на привязку. Я пропустил это в API, и это спасет меня некоторое время, продвигаясь вперед. –