我正在尝试从 AndroidStudio 应用将数据写入 Firebase 的实时数据库。我必须在不同的 child 中编写一些Java HashMap,但我注意到当HashMap的大小大于120k时,HashMap不会存储在实时数据库中(但没有显示错误)。相反,如果大小小于 120k,则一切正常,并且 HashMap 的每个条目都将成为数据库中相应子项的条目。是尺寸问题吗?怎么解决呢?
这是我正在使用的代码:
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("parent");
for(int i=0;i<myMaps.length;i++){
myRef.child("child"+i).setValue(myMaps[i]);
}
编辑:我认为这不是重量问题。示例:
myMaps[x] 有 127k 个条目,重 5.5MB ==> 未写入
myMaps[y] 包含 119k 条目,大小为 9.7MB ==> 已写入
而且每个 HashMap 的大小不到 11MB。
最佳答案
根据documentation :
Size of a single write request to the database
Limit: 256 MB from the REST API; 16 MB from the SDKs.
Notes: The total data in each write operation should be less than 256 MB. Multi-path updates are subject to the same size limitation.
您可能超出了此限制。
我认为映射中的条目数量并不重要 - 它可能是其中所有数据的总序列化大小。
关于java - DatabaseReference 的 setValue() 方法是否有一次调用中可以写入的最大子级数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60767400/