我想使用addValueEventListener()获取节点的子代。当图书数据很少时,它可以正常工作,但是当图书数超过30000时,它会发出错误消息“ java.lang.RuntimeException:Firebase数据库遇到OutOfMemoryError。您可能需要减少同步到客户端的数据量(例如通过使用查询或同步更深的路径)。“
Firebase数据结构为
booksData
123 (book id)
bookname : ""
writer : ""
price : ""
category : ""
publicher : ""
...
456 (book id)
bookname : ""
writer : ""
price : ""
category : ""
publicher : ""
...
.... and so on. having vast data
(仅出于示例更改数据结构和名称)
我在android中尝试过
userIDRef1.child("booksData").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Log.e(TAG, "in get booksData");
ArrayList<BooksWrapper> booksList = new ArrayList<>();
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
BooksWrapper vtw = postSnapshot.getValue(BooksWrapper.class);
booksList.add(vtw);
}
userIDRef1.child("booksData").removeEventListener(this);
Log.e(TAG, "daybooks data size is : "+booksList.size());
if (booksList.size() >0){
db.addBookData(booksList);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
// Failed to read value
Log.e(TAG, "Failed to read app title value.", error.toException());
}
});
有什么方法可以获取数据,首先是1000本,然后是1000本,依此类推...?任何解决方案请...