如何以排序的方式检索文档的值?

时间:2019-12-26 21:13:56

标签: java android firebase google-cloud-firestore

我正面临一种情况,我想检索字段值(时间)并将它们按排序顺序存储在ArrayList中,以便以后处理它们。我的文档中有24个值(00-23)。我想在循环迭代时以升序将值存储在索引中。值00应该存储在timesList(0)上,而23应该存储在timesList(23)上。但是循环的运行速度比Firebase代码快得多,而且我无序接收值。

final DocumentReference docRef = db.collection("parent").document(child);
        docRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
            @Override
            public void onSuccess(DocumentSnapshot documentSnapshot) {

                  for(int tcounter=0;tcounter<24;tcounter++){
                      if(tcounter<10){
                          documentSnapshot.getString("0"+String.valueOf(tcounter)); 
                          timesList.add(documentSnapshot.getString("0"+String.valueOf(tcounter))); 
                      }
                      else{
                          documentSnapshot.getString(String.valueOf(tcounter));
                          timesList.add(documentSnapshot.getString(String.valueOf(tcounter)));
                          if(tcounter==23){
                              valuesdownloaded="yes";
                          }
                      }

                }
             }
        });

My Firebase document format

1 个答案:

答案 0 :(得分:0)

不一定是解决问题的方法,但是这段代码要短得多,并且与当前操作相同:

SchedulerFactoryBean

除此之外,我怀疑您正在基于overwriteExistingjobs = true的值进行操作。您将要注意,数据是从Firebase异步加载的,并且需要数据库中数据的任何代码都应位于final DocumentReference docRef = db.collection("parent").document(child); docRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() { @Override public void onSuccess(DocumentSnapshot documentSnapshot) { for(int tcounter=0;tcounter<23;tcounter++){ String key = (tcounter<10) ? "0"+String.valueOf(tcounter) : String.valueOf(tcounter); timesList.add(documentSnapshot.getString(key)); } valuesdownloaded="yes"; } }); 内部或从那里调用。有关示例,请参见我的详细说明:[res.on.exception.handling]/4