子节点因超过 1MB 而卡住(可能是 Firebase 错误)

问题描述 投票:0回答:1

我的

/users/[id]
firebase 实时数据库文档中有一个用户,其节点中有
1,048,599
字符,主要是因为他们在
/users/[id]/favorites/[favorites]
中有太多收藏夹,我在某处读到最大值是
1MB
,因此添加以编程方式到达此节点的任何内容都会抛出
trigger_payload_too_large
错误以及消息
TRIGGER_PAYLOAD_TOO_LARGE: This request would cause a function payload exceeding the maximum size allowed.

手动添加孩子时,显示

An error occurred

现在的问题是,我不仅无法向其写入任何内容,而且无法更新或删除任何节点。我试图寻找一种批量删除的方法,但显然,除了循环和使用

.remove()
之外,不存在这种方法。

当我尝试更新或删除时,更新不被接受(不会发生任何事情),删除只会带回子节点(例如在

/favorites
内部),当我尝试以编程方式更新或删除它们时,它抛出
TRIGGER_PAYLOAD_TOO_LARGE: This request would cause a function payload exceeding the maximum size allowed.
错误。

除了删除整个用户(我不确定是否可以解决问题)之外,还应该做什么?

firebase firebase-realtime-database google-cloud-functions
1个回答
0
投票

我在某处读到最大为 1MB

实时数据库对单个节点下可以存储的数据量没有限制。另一方面,在 Firestore 中,您可以向文档中放入的数据量存在一些限制。根据官方文档有关使用和限制

文档的最大大小:1 MiB(1,048,576 字节)

如您所见,单个文档中的数据总量限制为 1 MiB。

回到实时数据库,可用的单一限制与由写入触发的单个事件的大小有关。这意味着大于 1 MiB 的写入操作不会触发 Cloud Function 调用。

在这种情况下,有两种选择,您可以对数据进行非规范化,这样您可以拥有小于 1 MiB 的节点,或者可以使用 Firestore 并尝试限制在文档中存储的数据量。

© www.soinside.com 2019 - 2024. All rights reserved.