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查询结果无效的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI + Firestore - 基于从 Firestore 返回的数组的过滤器列表
使用来自firestore数据库的geoflutterfire查询结果,使用flutter应用程序返回null或啥都没有,但语法没有错误