javascript - 组合多个集合组查询
问题描述
我已经建立了一个这样的firebase数据库:
food (collection)
- 10/19/2021 (document)
- Breakfast (collection)
- Food Item 1 (document)
- Lunch (collection)
- Food Item 1 (document)
- Dinner (collection)
- Food Item 1 (document)
- 10/20/2021 (document)
- Breakfast (collection)
- Food Item 1 (document)
- Lunch (collection)
- Food Item 1 (document)
- Dinner (collection)
- Food Item 1 (document)
我现在想查询符合特定条件的所有食品,即FoodItem.calories < 500
.
我应该如何设置这个查询?
我想使用集合组查询,但这似乎只适用于一顿饭:例如早餐、午餐或晚餐,但不是全部三餐。
我应该设置 3 个查询,每餐 1 个,然后合并结果,还是有更清洁的方法?
const breakfast = query(collectionGroup(db, 'breakfast'), where('calories', '<=', '100'));
const querySnapshot = await getDocs(breakfast);
解决方案
集合组查询适用于具有给定名称的所有集合。由于您已根据它们所涵盖的餐点命名您的集合,因此您不能使用单个集合组查询来读取所有餐点。
常见的解决方案是为所有这些集合使用一个名称(例如meal
),然后将餐食的类型(例如Breakfast
)存储在该餐食中食物项的父文档中。
另一种方法是对每种膳食类型(例如Breakfast
)执行单独的集合组查询,并将结果合并到您的应用程序代码中。
推荐阅读
- apache - 在 URL 中用 .htaccess 替换字符串
- html - 里面的图标在焦点上
- docker - docker端口映射不转发流量
- c - 如何在一个项目中同时使用一个库和同一个库的修改版本?
- spring - java.lang.ClassNotFoundException: org.hibernate.bytecode.instrumentation.internal.FieldInterceptionHelper Java Spring 异常
- java - new String[]{"0"} 是什么意思?
- r - 将数据帧写入R中的dbf文件
- python - 为什么 PyQt 中的这段代码允许我不选中所有单选按钮?
- .htaccess - htaccess RewriteRules 不适用于子目录
- python-3.x - Python 检查类型是否匹配特定类型