java - 使用 Java 和 Google 的 Firestore 运行查询时没有输出
问题描述
我有一个程序是事件创建者/定位器。我遇到的问题是从数据库中提取查询。在这个例子中,我只是想从数据库中提取一个特定的邮政编码,并显示查询提供的相应文档的详细信息。
private void findEvent() {
Log.d(TAG,"Start FindEvent Function");
eventRef.whereEqualTo("zip", searchZip.toString())
.limit(1).get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
Log.d(TAG, "Task Successful! Starting For Loop!");
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId()+"=>"+document.getData());
updateUI(document);
}
} else {
Log.w(TAG, "Error getting documents.", task.getException());
}
}
});
}//end findEvent function
当我在手机上运行程序并点击启动上述功能的搜索按钮时,没有任何内容输出到我的活动中。我检查了日志,这就是我将它们放入的原因,并且在日志中,我得到了调试:“任务成功!开始 for 循环!” 然后,当我期待 updateUI 函数中的调试日志告诉我该函数正在启动时,之后什么也没有了。因此告诉我它没有运行 updateUI 功能。
解决方案
您的查询可能只是没有返回任何结果,并且您的代码没有检查这种情况。
在迭代交付给任务的QuerySnapshot之前:
QuerySnapshot qsnapshot = task.getResult();
您可以使用它的isEmpty()方法来确定它是否实际包含任何文档:
if (qsnapshot.isEmpty()) {
Log.d(TAG, "Query resulted in no documents");
}