firebase - 我可以在 Firestore 搜索中过滤多个字段吗?
问题描述
我在我的应用程序中使用 Firestore 数据库。
现在,是否可以在多个字段中搜索特定单词?
例如:想象一个像“芝士蛋糕”这样的词。现在,我收集了 100 个文档,每个文档有 10 个不同的字段。
我可以过滤所有字段上的单词,以便它返回任何在 Flutter中的任何字段中包含单词“cheesecake”的文档吗?
解决方案
不,你不能这样做。
查看有关查询的 Firebase Firestore 文档页面,您会发现以下内容:
Cloud Firestore 不支持以下类型的查询:
这并不直接适用于您的特定用例,但您的请求不起作用的原因是相似的:没有允许您根据多个不同字段进行排序的索引。
例如,您可以创建对每个字段进行排序的索引,但只能单独查询它们。要了解为什么不支持某些查询,您可以查看 Firebase 团队的深入解释视频。
最后,这意味着您将需要在客户端进行过滤。
Flutter 中的解决方法概念
final QuerySnapshot querySnapshot =
await Firestore.instance.collection('cakes').getDocuments();
final List<DocumentSnapshot> documents =
querySnapshot.documents.where((snapshot) => snapshot.data.containsValue('cheesecake'));
// now the [documents] object will only contain documents, which have "cheesecake" as any of their fields
推荐阅读
- html - CSS Grid 在不同的行上重复不同的值
- kubernetes - 无法使用 kubectl cp 命令将数据从 POD 复制到本地
- python - 如何合并值
- python - 我第一次使用 python 进行网络抓取失败,通过 python 为每个人书
- azure - Azure 组件的自定义角色
- git - Git .gitignore 命令
- node.js - 强制停止范围外的生成器功能
- radio-button - 使用标签选择的单选按钮未显示为选中状态
- cygwin - 有什么方法可以告诉 make 在发生故障时打印更好的诊断信息?
- javascript - 验证 MIME 类型的 Javascript