【问题标题】:Firestore Query Android WhereEqualToFirestore 查询 Android WhereEqualTo
【发布时间】:2018-02-14 06:27:00
【问题描述】:

我要做的是查找“usuarios”等于“amigos”的所有文档。 问题是“amigos”是一个列表。我要你带上你在那个清单上找到的所有字符串(朋友)的所有文件。 但我得到这个错误:

未实现:不支持的 FieldFilter 值类型:9

CollectionReference collectionReference = db.collection("eventos");

collectionReference.whereEqualTo("usuario", amigos).limit(15).orderBy("hora", Query.Direction.DESCENDING).get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {

enter image description here

【问题讨论】:

  • 你能显示显示错误的完整的 logcat 行吗?有没有异常的崩溃?到底发生了什么?
  • 在“WhereEqualTo”中,我想发送一个Collection。这是我在 addOnFailureListener 中遇到的唯一错误。
  • 按照 Doug 的要求,请将您的整个错误粘贴到此处。
  • 它没有给我任何错误,它根本不返回任何文档。您在 addOnFailureListener 中得到的唯一错误。击中你的错误是完全的错误。我没有别的了。
  • 请添加您的数据库结构以查看您的usuario 的样子。

标签: java android firebase google-cloud-firestore


【解决方案1】:

您收到该错误是因为您尝试使用 unsupported 类型过滤器过滤数据。您提交的amigosArrayList,不能用于过滤数据。 whereEqualTo() 方法的第二个参数永远不能是ArrayList。您只能按supported data types 过滤。不幸的是,Firestore 不支持 ArrayList。

另请参阅Query.whereEqualTo(String field, Object value)

创建并返回一个带有附加过滤器的新查询,该过滤器文档必须包含指定的字段并且值应该等于指定的值。

【讨论】:

  • 好的,我能做些什么来实现它?改变代码的逻辑?
  • 是的,您需要更改代码的逻辑。我建议您使用字符串值过滤数据。
猜你喜欢
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多