0

我嘗試使用此代碼,但不工作火力GET parrent刪除

var idUser = event.data.ref.parent.ref.parent.child('idUser').previous.val(); 

在此之前使用

event.data.ref.parent.ref.parent.child('idUser').onDelete(event => { 
    event.data.previous.val(); 
}); 

當嘗試,我得到一個錯誤這是我的全部代碼

exports.makePurchaseSummaryDelete = functions.database.ref('/invoice_data/{pushIdInvoice}/item/{pushIdItem}') 
    .onDelete(event => { 
    var name = event.data.child('itemName').previous.val(); 
    var quantity = event.data.child('quantity').previous.val(); 
    var idUser = event.data.ref.parent.ref.parent.child('idUser').previous.val(); 
    var refUser = db.ref('/user_data/' + idUser + '/purchaseSummary/' + name.toUpperCase()); 
    refUser.once("value", function(snapshotUser) { 

    }, function (errorObject) { 
     console.log("The read failed: " + errorObject.code); 
    }); 

    return true; 
}); 

database structure

+0

我看不到圖片 –

+0

@Hari:沒有Firebase雲端函數標籤。請參閱標記[更改我所做的](https://stackoverflow.com/posts/45491967/revisions),因爲我也已將它提交給您的上一個問題。請參閱我的解釋在這裏:https://stackoverflow.com/questions/42854865/what-is-the-difference-between-cloud-function-and-firebase-functions –

回答

1

數據庫事件會自動傳遞事件觸發(和向下)節點的任何數據。

當你上去parent鏈,你將不得不通過附加一個監聽器來顯式加載數據。這與您在此問題中已經完成的操作非常相似:firebase cloud function function looping in execution

不幸的是,您無法獲得層次結構中較高層的節點的先前值,而不是您觸發該功能的節點。

+0

感謝您的答案,我可以得到之前的數據從刪除快照? –

+0

不是來自普通的「快照」。以前的值只能在「DeltaSnapshot」中使用。您只能從'event'參數獲取'DeltaSnapshot'。來自聽衆的任何東西都是普通的「快照」。 –