我想在firestore. 在获取另一个集合中的其他信息之前,我需要一些关于一个集合的信息。我已经尝试使用Tasks.whenall()...但效率不高。我也尝试使用callBack。这是我的第一个功能:public static void getAllFavoris(){ String uid = FirebaseAuth.getInstance().getCurrentUser().getUid(); FirebaseFirestore.getInstance().collection("product").document("favoris").collection(uid).get() .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { @Override public void onComplete(@NonNull Task<QuerySnapshot> task) { if (task.isSuccessful()) {//task is succesful Log.e("TAG","task succes for fav "); for (QueryDocumentSnapshot document : task.getResult()){//never enter in this loop Log.e("TAG","Doc "+document); Log.e("TAG", "Succes for get all favoris"); Log.e("TAG","data for favoris ::: "+document.getId()); MainActivity.favorisList.add(document.getId()); } } else { Log.d("TAG", "Error getting documents: ", task.getException()); }//call without data retrieve Log.e("TAG","favoris ::: "+showListContentS(MainActivity.favorisList)); getProductByTagFound(); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.e("TAG","error get All favoris"+e); } });}我需要在循环完成后调用它createFinalList(),还需要进入循环以获取数据并getProductByTag()在之后调用。
1 回答
慕后森
TA贡献1802条经验 获得超5个赞
如果您想在第一个查询完成后立即执行新查询,则需要等到第一个查询完成。要解决这个问题,您需要使用嵌套查询。换句话说,您需要将第二个查询直接移动到第一个回调的内部onComplete()
方法中。这样,只有在第一个查询完成时,才会执行第二个查询。
添加回答
举报
0/150
提交
取消