javascript - Firebase Firestore - 如何查询两个匹配的“WHERE”子句中的任何一个
问题描述
我正在开发一项search
功能,我当前的代码适用于使用name_lower
我的 firestore 文档中的字段进行搜索。
假设我的收藏中有此文档:
{
name_lower: 'burnik',
keywords: ['gago', 'sira']
}
const searchArr = searchParams.split(' ');
const snap = await productsRef
.where('name_lower', 'in', searchArr)
.limit(12)
.get();
但是如果我还想查询keywords
我的文档中的匹配项,我该如何查询
这是无效的,因为我已将 ain
和array-contains-any
filter 组合在一起,如错误所示。
const snap = await productsRef
.where('name_lower', 'in', searchArr)
.where('keywords', 'array-contains-any', searchArr) // <------- invalid
.limit(12)
.get();
我想到了一个可能的解决方案,即对匹配的关键字进行另一个查询,然后过滤并组合它们。
const matchedNameSnap = await productsRef
.where('name_lower', 'in', searchArr)
.limit(12)
.get();
const matchedKeySnap = const snap = await productsRef
.where('keywords', 'array-contains-any', searchArr)
.limit(12)
.get();
// ... map and filter matchedKeySnap and matchedNameSnap
Firebase 中是否有“OR”语句,或者至少是如何查询 WHERE 子句的更好解决方法?
解决方案
推荐阅读
- java - 为什么我在硒中收到错误“屏幕截图失败,重试超时:接收来自渲染器的消息超时:10.000”?
- javascript - 在解析云中更新用户
- python - 如何将熊猫数据框转换为分层字典
- python-3.x - 将 sample_weights 用于平衡数据集是否有意义?
- javascript - JavaScript拼接超过1个值?
- windows - Haskell for Windows 中的 ncurses
- python - ValueError:绘制预测值时 x 和 y 的大小必须相同
- java - 使用三元运算符与字节变量类型不匹配
- javascript - 我正在尝试调用 JavaScript 函数,但我无法访问它,因为它显然是“未定义”
- c# - Visual Studio 2019 忽略选项卡首选项