"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
我正试图在 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