我有一個Firebase子節點,其中包含大約15,000,000個子對象,總大小約爲8 GB的數據。如何刪除Firebase中的大節點
exampele數據結構:
firebase.com/childNode/$pushKey
each $pushKey contains a small flat dictionary:
{a: 1.0, b: 2.0, c: 3.0}
我想盡可能有效和方便地刪除這些數據。怎麼樣?
我試了一下: 我的第一次嘗試是一個PUT請求:
PUT firebase.com/childNode.json?auth=FIRE_SECRET
data-raw: null
響應:{ 「錯誤」:「數據要求超出了可以用一個請求訪問的最大尺寸。請聯繫[email protected]尋求幫助。「 }
所以沒有工作,讓我們做一個限制要求:
PUT firebase.com/childNode.json?auth=FIRE_SECRET&orderBy="$key"&limitToFirst=100
data-raw: null
響應:{ 「錯誤」: 「查詢相關參數不支持這個請求類型」 }
到目前爲止沒有運氣:(怎麼樣寫一個腳本,將獲得第一個X數的鍵,然後創建一個補丁請求,每個V alue設置爲null?
GET firebase.com/childNode.json?auth=FIRE_SECRET&shallow=true&orderBy="$key"&limitToLast=100
{ 「錯誤」: 「攪拌 '淺',查詢參數不支持」 }
這確實不是一件容易的事這一個?我可以刪除淺層需求並獲取密鑰,並完成腳本。我只是希望有一個更容易/更有效的方式?
我嘗試過的另一件事是創建一個節點腳本來監聽childAdded,然後直接嘗試刪除這些孩子?
ref.authWithCustomToken(AUTH_TOKEN, function(error, authData) {
if (error) {console.log("Login Failed!", error)}
if (!error) {console.log("Login Succeeded!", authData)}
ref.child("childNode").on("child_added", function(snap) {
console.log(`found: ${snap.key()}`)
ref.child("childNode").child(snap.key()).remove(function(err) {
if (!err) {console.log(`deleted: ${snap.key()}`)}
})
})
})
這個腳本實際上掛起的權利,但我前面確實收到出頭像一個最大堆棧限制從火力警告。我知道這不是一個火力點問題,但我沒有看到任何特別簡單的方法來解決這個問題。
如果我沒有記錯,那麼挑戰只是刪除一個節點而不是一個完整的項目。 –
@AndreasOkholm:對不起,我的壞處是 remove --project –
AshuKingSharma