使用Java和Google的Firestore运行Query时没有输出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Java和Google的Firestore运行Query时没有输出相关的知识,希望对你有一定的参考价值。

我有一个程序,它是一个事件创建者/定位器。我遇到的问题是从数据库中提取查询。在这个实例中,我只是尝试从数据库中提取特定的邮政编码,并显示从查询中提供的相应文档的详细信息。

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

当我运行程序时,在我的手机上点击启动上述功能的搜索按钮,我的活动没有输出任何内容。我检查日志,这就是我放入它的原因,在日志中,我得到了调试:“任务成功!开始循环!”然后什么都没有,当我期待我在updateUI函数中的调试日志,它告诉我函数正在启动。因此告诉我它没有运行updateUI函数。

答案

您的查询可能只是没有返回任何结果,并且您的代码没有检查该情况。

在迭代传递给任务的QuerySnapshot之前:

QuerySnapshot qsnapshot = task.getResult();

您可以使用其isEmpty()方法来确定它是否实际包含任何文档:

if (qsnapshot.isEmpty()) {
    Log.d(TAG, "Query resulted in no documents");
}

以上是关于使用Java和Google的Firestore运行Query时没有输出的主要内容,如果未能解决你的问题,请参考以下文章

在 Google Firestore 中处理查询游标的正确方法? (Vue/Nuxt.js)

如何从 Python 运行时云函数访问 Google Cloud Platform Firestore 触发器

Flutter multidex 问题与 FirebaseAuth 、 Firestore 和 Google 登录

Firestore/Firebase 模拟器未运行

Firebase Firestore 未在 google chrome 中获取数据

尝试使用 Ktor/Java8 读取在 App Engine Standard 上运行的数据时,Firestore 客户端挂起