2015-12-24 568 views
2

一個一切價值的最有效方法說我有看起來像這樣的條目:遞增在火力地堡

Firebase Image

而且我想通過1遞增priority場的每個項目在預算清單。

我可以抓住這樣的估計:

var estimates = firebase.child('Estimates'); 

在那之後我將如何自動遞增1每預算的優先級?

+0

你有沒有嘗試任何事情了嗎? Firebase文檔不錯,可幫助您開始使用。本指南將不會超過幾個小時,將節省您的時間湯姆斯:https://www.firebase.com/docs/web/guide/ –

+0

下面的答案。對於下一個問題:顯示你已經嘗試了什麼,不包括文本的截圖。您可以從Firebase儀表板導出JSON,並將其包含爲文本,這樣我們可以更輕鬆地在答案中重複使用(並在找出答案時使用)。 –

回答

3

這是一個地遍歷所有項目,並增加它們的優先級:

var estimatesRef = firebase.child('Estimates'); 
estimatesRef.once('value', function(estimatesSnapshot) { 
    estimatesSnapshot.forEach(function(estimateSnapshot) { 
    estimateSnapshot.ref().update({ 
     estimateSnapshot.val().priority + 1 
    }); 
    }); 
}); 

它遍歷的Estimates所有兒童,並增加各的優先級。

您也可以調用合併成一個單一update()電話:

var estimatesRef = firebase.child('Estimates'); 
estimatesRef.once('value', function(estimatesSnapshot) { 
    var updates = {}; 
    estimatesSnapshot.forEach(function(estimateSnapshot) { 
    updates[estimateSnapshot.key()+'/priority'] = estimateSnapshot.val().priority + 1; 
    }); 
    estimatesRef.update(updates); 
}); 

性能將類似於第一個解決方案(火力地堡是非常有效的,當涉及到處理多個請求)。但在第二種情況下,它會向服務器發送單個命令,因此它將失敗或完全成功。

+1

你能否給你的代碼解答添加一些解釋?這是[在VLQ隊列(http://stackoverflow.com/review/low-quality-posts/10685482),但因爲它試圖回答(從它的外觀)的問題,它可能不應該有。 –

+0

應該在Firebase 3上進行這項工作嗎?它似乎不像estimateSnapshot.val()。priority + 1語句.... – Stradosphere

+0

我很確定沒有任何關於該聲明改變。如果您有問題,請使用[重現問題的最小代碼]發佈問題(http://stackoverflow.com/help/mcve),我們可以看看。 –