[英]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.