firebase firestore flutter where 查询

Posted

技术标签:

【中文标题】firebase firestore flutter where 查询【英文标题】:firebase firestore flutter where query 【发布时间】:2021-11-13 00:34:28 【问题描述】:

我想过滤数据列表中存在的嵌套数组项上的 Firestore 列表。

我有一个包含多个文档的集合决策。您可以在图片中看到该文档有团队列表,并且团队列表还有一个团队成员列表,所以我只需要获取那些电子邮件(存在于 team_list 的 team_member_list 字段中)等于我的电子邮件 ID 的文档。 如何使用 where 子句在 Flutter Firebase Firestore 中获取此信息?

FirebaseFirestore.instance.collection('decision').orderBy('close_date')

【问题讨论】:

这能回答你的问题吗? How to retrieve documents form firebase firestore according to a specific value in those documents in flutter? 【参考方案1】:

Firebase 的array-contains operation 可用于过滤数组字段中存在特定项的文档,但该操作要求您指定数组中的完整项。

没有办法只在数组中的项目中搜索单个值,也无法在子数组中搜索(如在您的文档结构中)。

如果您希望能够根据团队成员的电子邮件选择文档,请将具有这些值的字段添加到文档中,并与 teams_list 字段保持同步。

这样的字段看起来像这样:

team_member_emails: ["snjmediastudio@gmail.com", "vishal@somewhere.com"]

获得该字段后,您可以使用以下方式查询:

FirebaseFirestore.instance.collection('decision')
  .where("team_member_emails", "array-contains", "snjmediastudio@gmail.com")

【讨论】:

以上是关于firebase firestore flutter where 查询的主要内容,如果未能解决你的问题,请参考以下文章

使用Firestore需要firebase-firestore.js文件吗?

无法在firebase.firestore.CollectionReference中使用Array firebase.firestore.Query为什么?

(firebase.firestore 不是函数)尝试在 Firestore 中创建集合时

Firestore 配置 - Firebase

firebase2.default.firestore 不是一个函数 - React Firebase

忽略 firebase.firestore.timestamp