【发布时间】:2018-07-10 02:54:15
【问题描述】:
我正在尝试获取 Cloud Firestore 上存在的 CollectionReference 计数,我已尝试通过以下方式获取它:
FirebaseFirestore db = FirebaseFirestore.getInstance();
final CollectionReference postsCollection = db.collection("Posts");
final TaskCompletionSource<Integer> source = new TaskCompletionSource<>();
new Thread(new Runnable() {
@Override
public void run() {
int fromWhereToStart = postsCollection.get().getResult().size();
source.setResult(fromWhereToStart);
}
}).start();
Task<Integer> task = source.getTask();
task.addOnCompleteListener(new OnCompleteListener<Integer>() {
@Override
public void onComplete(@NonNull Task<Integer> task) {
Log.e("Z_fromWhereToStart", "= " + task.getResult());
}
});
但不幸的是,我得到了:
java.lang.IllegalStateException: Task is not yet complete
是否有另一种方法来计算修复IllegalStateException 的另一种方法?
【问题讨论】:
-
在使用日志之前在 onCompelete() 中检查
if (task.isSuccessful())。您还可以像for (DocumentSnapshot document : task.getResult()){ yourCounter++;}一样遍历documentSnapShot,并在每次迭代时递增计数器,以了解“帖子”集合下有多少文档可用。 -
谢谢,我已经尝试过 'if (task.isSuccessful())' 以确保它不起作用,问题出在 Integer fromWhereToStart 的行中,我也没有使用 count++因为我只是添加数据不需要获取整个文档,但是如果我找不到解决方案,我可能会使用这个想法,再次感谢您
-
所以您要计算
Posts集合中的所有文档?这是你想要的吗? -
@AlexMamo 是的,有没有办法在不获取整个数据的情况下获取计数
-
@MohammedFarhan 你也可以添加你的评论作为答案
标签: java android firebase google-cloud-firestore illegalstateexception