【问题标题】:query intersection of lists in firebase and flutter查询 firebase 和 flutter 中列表的交集
【发布时间】:2022-11-23 09:13:28
【问题描述】:
我正在开发一个带有 flutter 的移动应用程序,我正在尝试从 firebase 查询一个对象列表,firebase 中的每个对象都有一个包含对象类别的字符串数组,在 flutter 上,我有一个包含我想查看的类别的字符串列表,我想从 firebase 中查询所有对象,这些对象至少包含我从 flutter 中选择的数组中存在的字符串中的一个,但我还没有找到这样做的方法,我还看到 firebase 将查询限制为 10 种类型,但我可能希望数组中有 10 种以上的类型。
如果有人可以帮助我,那就太好了,因为我不知道从哪里开始。
【问题讨论】:
标签:
flutter
firebase
google-cloud-firestore
nosql
【解决方案1】:
执行:
首先,这是您的问题的解决方案。
您需要使用array-contains。例子:
final objectsRef = db.collection("objects");
final myCategoryObjects =
objectsRef .where("categories", arrayContains: "category1");
此 link 文档中有更多相关信息。
10个限制:
请注意,10 个限制不适用于您的情况,因为您正在搜索只有 1 个类别.
如果您想搜索“类别 1”或“类别 2”的所有对象,则 10 个的限制将适用于您。在这种情况下,您有 2 个解决方案:
1- 在您的应用程序中执行本地过滤器(而不是在 Firebase 中),或者
2- 向 Firestore 添加分别特定于每个类别的新字段。例如,字段 1 是布尔值“类别 1”(真或假)...字段 2 是布尔值“类别 2”(真或假),依此类推
让我知道是否有任何后续行动。