angular - 来自firebase cloudstore查询中单个集合的多个'in'运算符
问题描述
我有一个 firebase 查询,(伪代码)
collectionName
, ref => ref
.where('field1' , 'in', array1)
.where('field2' , 'in' , array2)
.snapshotChanges()
.pipe(map(actions => {
return actions.map(a => {
/* Some more Code */
})
})
我需要将多个“in”运算符保留在来自 FB Cloud Firestore 的字段数据中。我在这样做时遇到了错误问题,因为单个查询中的运算符中不能有多个。有什么方法可以仅基于此查询从中获取记录。我无意在查询中使用单个 IN 运算符从 FB 获取所有记录并在客户端过滤它
解决方案
我需要将多个“in”运算符保留在来自 FB Cloud Firestore 的字段数据中。
文档很清楚这是不可能的。
请注意 in 和 array-contains-any 的以下限制:
- in 和 array-contains-any 最多支持 10 个比较值。
- 每个查询只能使用一个 in 或 array-contains-any 子句。您不能在同一查询中同时使用 in 和 array-contains-any。
- 您可以将 array-contains 与 in 结合,但不能与 array-contains-any 结合。
- 您不能按等式 (=) 或 in 子句中包含的任何字段对查询进行排序。
这些都是硬性限制。没有简单的解决方法。考虑重组您的数据,以便可以执行您想要执行的查询,或者执行多个查询,并计算它们结果的交集。
推荐阅读
- postgresql - 如何使用 Postgres 计算平均日期差
- c# - 如何配置 xUnit 测试以使用 NLog?
- qradar - 使用 API 的 IBM QRadar 搜索事件
- api - 如何从 API 发送自适应卡片
- javascript - vue.esm.js:649 [Vue 警告]:nextTick 中的错误:“TypeError:无法将对象转换为原始值”vue
- javascript - “请求”类型上不存在属性“授权”
- c# - Angular 9 / Typescript 在多个键上合并多个对象数组
- postgresql - 全文搜索:在任意数组项中查找节点值
- matlab - 如何获得两个二维矩阵的元素对之间的最大值?
- c++ - 如何使用 MySQL X Dev API ping