Firestore查询结果无效

时间:2018-04-22 00:43:04

标签: java android firebase google-cloud-firestore

我有一个类似的Firestore文档设置:

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

}

我有所有getter和空的consturctor,添加,更新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,但我无法得到结果

1 个答案:

答案 0 :(得分:0)

好的,我让它发挥作用,事实证明这是我在查询中的愚蠢错误。

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