我的
/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.
错误。
除了删除整个用户(我不确定是否可以解决问题)之外,还应该做什么?
我在某处读到最大为 1MB
实时数据库对单个节点下可以存储的数据量没有限制。另一方面,在 Firestore 中,您可以向文档中放入的数据量存在一些限制。根据官方文档有关使用和限制:
文档的最大大小:1 MiB(1,048,576 字节)
如您所见,单个文档中的数据总量限制为 1 MiB。
回到实时数据库,可用的单一限制与由写入触发的单个事件的大小有关。这意味着大于 1 MiB 的写入操作不会触发 Cloud Function 调用。
在这种情况下,有两种选择,您可以对数据进行非规范化,这样您可以拥有小于 1 MiB 的节点,或者可以使用 Firestore 并尝试限制在文档中存储的数据量。