我有一个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