gpt4 book ai didi

firebase - 如何删除firebase中的大节点

转载 作者:行者123 更新时间:2023-12-02 21:35:52 27 4
gpt4 key购买 nike

我有一个 Firebase 子节点,其中包含大约 15,000,000 个子对象,数据总大小约为 8 GB。

数据结构示例:

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

response: { "error": "Data requested exceeds the maximum size that can be accessed with a single request. Contact support@firebase.com for help." }

所以这不起作用,让我们做一个限制请求:

PUT firebase.com/childNode.json?auth=FIRE_SECRET&orderBy="$key"&limitToFirst=100
data-raw: null

response: { "error": "Querying related parameters not supported on this request type" }

到目前为止还没有运气:(编写一个脚本来获取前 X 个键,然后创建一个将每个值设置为 null 的补丁请求怎么样?

GET firebase.com/childNode.json?auth=FIRE_SECRET&shallow=true&orderBy="$key"&limitToLast=100

{ "error" : "Mixing 'shallow' and querying parameters is not supported" }

这件事真的不容易吗?我可以删除浅层要求并获取 key ,然后完成脚本。我只是希望有一种更简单/更有效的方法???

我尝试的另一件事是创建一个节点脚本来监听 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()}`)}
})
})
})

这个脚本实际上现在挂起,但早些时候我确实收到了来自 Firebase 的最大堆栈限制警告。我知道这不是 firebase 问题,但我没有看到任何特别简单的方法来解决该问题。

最佳答案

下载浅树,将仅下载 key 。因此,您可以下载所有 key ,而不是要求服务器排序和限制。

然后您可以在客户端进行排序和限制,并批量向 Firebase 发送删除请求。

您可以使用此脚本来获取灵感:https://gist.github.com/wilhuff/b78e7391396e09f6c614

关于firebase - 如何删除firebase中的大节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33946769/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com