【问题标题】:How to find the string from string array in firestore如何从firestore中的字符串数组中找到字符串
【发布时间】:2020-01-29 10:06:58
【问题描述】:

我有一个文档列表,每个文档都有一个名为“fav”的字符串数组的字段,它有超过 50k 封电子邮件,几乎有 1000 个文档,每个文档的“fav”数组的长度可变,包括 50k, 20k,10 等。我正在获取所有文件

 Firestore.instance.collection("save").snapshots();

通过 StreamBuilder

StreamBuilder(
      stream: Firestore.instance.collection("save").snapshots();,
      builder: (context, snapshot) {
        if (!snapshot.hasData)
          return Text("Loading Data.............");
        else {
          listdata = snapshot.data.documents;

          return _buildBody(snapshot.data.documents);
        }
      },
    )

现在我如何从每个文档的“fav”字段中搜索我所需的电子邮件?我必须在本地找到数组中所需的id后执行操作。

【问题讨论】:

  • 问题不清楚,能否补充详细信息。如果要获取fav 包含abc@gmail.com 的所有项目,则可以执行.where("fav", arrayContains: "abc@gmail.com") 之类的操作。但是,如果您有这么多电子邮件(例如数千封),最好使用集合来存储电子邮件。
  • 已在 Github 问题上修复。我强烈建议您在此处寻求帮助之前查看 Flutter Github 存储库。 ;)

标签: string firebase flutter google-cloud-firestore google-cloud-functions


【解决方案1】:

这个问题不是很清楚,但据我了解,这就是你要找的

Firestore.instance.collection('save')
.where('fav', arrayContains: 'abc@gmail.com').snapshots()

【讨论】:

【解决方案2】:

问题不是很清楚,但据我了解,您想在数组字段中找到一封电子邮件。该数组包含在每个文档中,并且所有文档都“流式传输”在一组快照中。

包含方法:https://api.dartlang.org/stable/2.0.0/dart-core/Iterable/contains.html

bool contains (
Object element
)

如果集合包含一个等于 element 的元素,则返回 true。

此操作将检查每个元素是否与元素相等,除非它有更有效的方法来查找与元素相等的元素。

用于判断元素是否等于可迭代元素的相等性默认为该元素的Object.==。

某些类型的可迭代对象可能对其元素使用不同的相等性。例如,一个 Set 可能具有其包含使用的自定义相等性(请参阅 Set.identity)。同样,由 Map.keys 调用返回的 Iterable 应该使用 Map 用于键的相同相等性。

实施

bool contains(Object element) {
  for (E e in this) {
    if (e == element) return true;
  }
  return false;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 2017-03-22
    • 1970-01-01
    • 2021-06-11
    • 2021-09-19
    • 2014-01-17
    • 2020-06-19
    相关资源
    最近更新 更多