如何批量检索 Firebase 数据以供后续操作?
How do I retrieve Firebase data in bulk for subsequent manipulation?
我正在从 SQLite 过渡到 Firebase,在这样做的过程中,我有很多预先存在的数据需要设置到不同的视图中。
初始视图:按字母顺序排列的列表(无重复项),仅显示存在于其下方的那些资源的字母(意味着如果没有以 X 开头的资源,则根本不应显示 X)。
第二视图:点击一个字母后,它会展开手风琴样式以显示以该字母开头的资源(无重复项)。
我的 Firebase 查询是正确的,因为我得到了正确的数据,但我该如何使用它呢?理想情况下,我想做的是获取所有主题,将它们放入 TreeSet 中以消除重复项并自动对它们进行排序,然后执行相同的操作,但只获取第一个字母。我无法从内部 class 修改集合、数组或列表,但如果我从内部实例化,我也无法访问它们(这无关紧要,因为它每次都被调用为 fresh单个对象,因此它始终是一个新集合)。
我是否缺少最佳实践?
mDatabase = FirebaseDatabase.getInstance();
mRootRef = mDatabase.getReference();
mQuoteRef = mRootRef.child("quotes");
Query topicQuery = mQuoteRef.orderByChild("Topic");
topicQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
TreeSet<String> topicList = new TreeSet<>(); <--obv not right
TreeSet<String> firstLetterList = new TreeSet<>();
GetQuoteInfo quote = dataSnapshot.getValue(GetQuoteInfo.class);
if (quote.getTopic() != null) {
topicList.add(quote.getTopic());
firstLetterList.add(quote.getTopic().substring(0, 1));
}
}
}
magicalListThatContainsAllOfMyFirebaseDataThatICanNowManipulate;
当您从 Firebase 数据库检索数据时,您将其检索为 Map
,而不是 Set
。因此,为了解决您的问题,请更改检索数据的方式。因为 Firebase 是 NoSQL database
,更确切地说是 JSON database
,所有内容的结构都是 key and value
。因此,将 Set
更改为 Map
,您的问题将得到解决。
希望对您有所帮助。
我正在从 SQLite 过渡到 Firebase,在这样做的过程中,我有很多预先存在的数据需要设置到不同的视图中。
初始视图:按字母顺序排列的列表(无重复项),仅显示存在于其下方的那些资源的字母(意味着如果没有以 X 开头的资源,则根本不应显示 X)。
第二视图:点击一个字母后,它会展开手风琴样式以显示以该字母开头的资源(无重复项)。
我的 Firebase 查询是正确的,因为我得到了正确的数据,但我该如何使用它呢?理想情况下,我想做的是获取所有主题,将它们放入 TreeSet 中以消除重复项并自动对它们进行排序,然后执行相同的操作,但只获取第一个字母。我无法从内部 class 修改集合、数组或列表,但如果我从内部实例化,我也无法访问它们(这无关紧要,因为它每次都被调用为 fresh单个对象,因此它始终是一个新集合)。
我是否缺少最佳实践?
mDatabase = FirebaseDatabase.getInstance();
mRootRef = mDatabase.getReference();
mQuoteRef = mRootRef.child("quotes");
Query topicQuery = mQuoteRef.orderByChild("Topic");
topicQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
TreeSet<String> topicList = new TreeSet<>(); <--obv not right
TreeSet<String> firstLetterList = new TreeSet<>();
GetQuoteInfo quote = dataSnapshot.getValue(GetQuoteInfo.class);
if (quote.getTopic() != null) {
topicList.add(quote.getTopic());
firstLetterList.add(quote.getTopic().substring(0, 1));
}
}
}
magicalListThatContainsAllOfMyFirebaseDataThatICanNowManipulate;
当您从 Firebase 数据库检索数据时,您将其检索为 Map
,而不是 Set
。因此,为了解决您的问题,请更改检索数据的方式。因为 Firebase 是 NoSQL database
,更确切地说是 JSON database
,所有内容的结构都是 key and value
。因此,将 Set
更改为 Map
,您的问题将得到解决。
希望对您有所帮助。