Java Firestore查询结果不工作
我有这样的Firestore文档设置:Java Firestore查询结果不工作,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,我有这样的Firestore文档设置: public class Item { String name; Map<String, Boolean> testMap; } 但当我尝试用下面的代码查询该值时,for()循环不起作用。我得到了I/Task:Successfullog,但是I/TestLog:TestLog没有显示,下面的代码也不起作用 mColRef.whereEqualTo("testMap.testValue", true) .get
public class Item {
String name;
Map<String, Boolean> testMap;
}
但当我尝试用下面的代码查询该值时,for()
循环不起作用。我得到了I/Task:Successful
log,但是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();
}
}
});
mColRef.whereEqualTo(“testMap.testValue”,true)
.get()
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Log.i(“任务”、“成功”);
对于(QueryDocumentSnapshot文档:task.getResult()){
Log.i(“TestLog”、“TestLog”);
Log.i(“ItemName:”,document.getString(“name”);
}
}否则{
Toast.makeText(FirebaseTest.this,task.getException().getMessage(),Toast.LENGTH_SHORT).show();
}
}
});
我真的很困惑,我几乎遵循了这个规则,但我无法得到结果。好吧,我让它工作了,结果证明这是我在查询中犯的愚蠢错误
我更新了
testMap
,更新的值与我在这里提供的值不同,确切地说是一封电子邮件,因为我认为它完全没有任何区别。结果是有区别的。当我查询结果时,我使用了mColRef.whereEqualTo(“testMap”)。email@email.com“,对)
还有一个
(点)内部电子邮件地址。点不能用作查询中的值,因为它用于将嵌套对象与数据库中的所有其他对象分开,因此查询可能在com
内部email
map中查找名为task.getResult()的对象。您应该记录task.getResult()的结果
请检查是否按照上述评论中的建议添加了日志来正确获取数据。好的,结果证明我只是个傻瓜,我记录了结果的大小,结果返回0,感谢大家的帮助,为了更好地查看,我将在下面发布完整的答案
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();
}
}
});