从 Firebase 异步收集数据:data-set 何时完成?

Gathering data from Firebase asynchronously: when is the data-set complete?

在我目前正在开发的 Firebase Android 应用程序中,我想提供导出功能。此功能应允许用户导出一组存储在 Firebase 中的数据。

我的计划是将所有需要的数据收集到一个中间 object(数据结构)中,可以(重新)用于多种导出类型。

我 运行 遇到这样一个问题,因为我使用的是平面 Firebase 数据结构(如 https://www.firebase.com/docs/android/guide/structuring-data.html 中所述),很难知道何时需要导出所有数据已收藏。

示例:当检索所有使用 'indices' 引用的 object 时(名称:key,值为 true),我为每个设置了一个 addListenerForSingleValueEvent 侦听器,但是因为这 returns 是异步的,无法确定何时检索所有索引。这样就无法确定开始导出的正确时刻。

谁有应对这种情况的最佳做法?

发布此内容以展示@FrankvanPuffelen 的评论的一个可行示例,该示例似乎很好地完成了这项工作:

@Override
public void onDataChange(DataSnapshot indexListDataSnapshot) {
    final long participantsRequired = indexListDataSnapshot.getChildrenCount();

    for (DataSnapshot ds : indexListDataSnapshot.getChildren()) {
        DataUtil.getParticipantByKey( mEventKey, ds.getKey() ).addListenerForSingleValueEvent( new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Participant p = dataSnapshot.getValue(Participant.class);
                mParticipants.add( p );

                if (participantsRequired == mParticipants.size()){
                    executeExport();
                }
            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {
                mListener.onDataLoadFailure( firebaseError.toException() );
            }
        });
    }
}