Firestore查询结果无效

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Firestore查询结果无效相关的知识,希望对你有一定的参考价值。

我有一个像这样的Firestore文档设置:

public class Item {
  String name;
  Map<String, Boolean> testMap;

}

我有所有的getter和空构造函数,添加,更新Firestore文档工作。

当我将值放入地图时,它看起来像这样:

testMap: { 
testValue: true }

但是当我尝试使用下面的代码查询该值时,for()循环不起作用。我得到I/Task: Successful日志,但I/TestLog: TestLog没有显示,下面的代码不起作用

mColRef.whereEqualTo("testMap.testValue", true)
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {

                    if(task.isSuccessful()) {
                        Log.i("Task", "Successful");


                        for (QueryDocumentSnapshot document : task.getResult()) {

                            Log.i("TestLog", "TestLog");

                            Log.i("ItemName:", document.getString("name");

                        }

                    } else {

                        Toast.makeText(FirebaseTest.this, task.getException().getMessage(), Toast.LENGTH_SHORT).show();

                    }

                }
            });

我真的很困惑,我几乎跟着documentation,但我无法得到结果

答案

好吧,我得到它的工作,事实证明这是我在查询中的愚蠢错误。

我更新了testMap,其价值与我在此提供的价值不同,确切地说是一封电子邮件,因为我觉得它完全没有任何区别。事实证明它确实如此。当我查询结果时,我使用了mColRef.whereEqualTo("testMap.email@email.com", true),并且在电子邮件地址中有.(点)。点不能在查询中用作值,因为它用于将数据库中的嵌套对象与所有其他对象分开,因此查询可能在com map中查找名为email的对象

以上是关于Firestore查询结果无效的主要内容,如果未能解决你的问题,请参考以下文章

循环浏览firestore查询结果

Firestore - 在本地合并两个查询

查询文件 ID 的 firestore 数据库

SwiftUI + Firestore - 基于从 Firestore 返回的数组的过滤器列表

重叠结果集的 Firestore 价格计算

使用来自firestore数据库的geoflutterfire查询结果,使用flutter应用程序返回null或啥都没有,但语法没有错误