"error" : "Data to write exceeds the maximum size that can be modified with a single request." 火力地堡

"error" : "Data to write exceeds the maximum size that can be modified with a single request." Firebase

我正试图在 Firebase realtime-database 中删除一个由许多 children 组成的节点。

我创建了这个可以工作的小函数,但是当有太多的时候就不行了 children :

def delete_node_firebase(node):
    node_val = db.child(node).get().val()
    for k, v in node_val.items():
        db.child(node).child(k).remove()

当我在一个有很多 children 的节点上调用时(在我的例子中超过 20000),出现这个错误:

"error" : "Data to write exceeds the maximum size that can be modified with a single request.

请问有人知道解决方案吗?

您试图在单个请求中 write/delete 太多数据,这将花费比数据库认为合理的时间更多的时间。常见的方法是以更合理的批次删除子节点,而不是允许此操作并可能阻止其他调用访问您的数据库。这已经被覆盖了很多次,所以我建议检查其中的一些 search results.

正如 Doug 评论的那样,此博客 post How to Perform Large Deletes in the Realtime Database explains how/when the Firebase command line tools implements such a chunked delete. If you want to implement it in your own code, you can have a look at the code of the CLI command 以获取灵感。

CLI 和 REST API 还允许您传递一个参数以指示您不希望它检查大 deletes/writes,因此请查看 [=13] 上的文档=] 据我所知,如果你想使用它,你必须自己调用 REST API。

另见:

  • How to delete many of data in "Realtime Database"
  • Firebase Realtime Database fast remove big query result
  • How to delete a large node in firebase