javascript - 根据 Firestore 中的文档字段限制数据
问题描述
我正在使用 Firebase Firestore 来满足我的数据需求。我有一个数据模型,其中有一个苹果集合,每个文档代表一个唯一的苹果,它有一个 object 类型的字段,它本质上是 <string, string> 的映射
把每个苹果文档想象成:
name: "SiberianApple",
weight: "400g"
color: {
today: "green",
yesterday: "red",
tomorrow: "crimson"
}
通过阅读文档,我了解到我们可以通过各种方式查询集合,但是是否可以限制客户端在获取文档时需要获取的信息量。我可以对此字段进行查询color
,使其仅返回
name: "SiberianApple",
weight: "400g",
color: {
today: "green"
}
基本上类似于graphql,我可以在其中询问我想要的东西。想知道是否可以查询或者该字段是否应该是本文档的子集合,以便我可以使用子集合的路径查询颜色apples/<appleId>/colors
?
解决方案
Cloud Firestore 侦听器在文档级别触发。无法仅使用文档中的特定字段触发或拆分文档以仅获取一个属性。这是整个文件或什么都没有。因此 Firestore 客户端 SDK 始终返回完整的文档。不幸的是,没有办法只请求文件的一部分。
是否可以限制信息量。
如前所述,这是不可能的。您可以做的是使用只能包含您需要的字段的文档创建另一个集合。这种做法称为反规范化,它在 NoSQL 数据库中是一种非常常见的做法。
推荐阅读
- laravel - Laravel Left join 不使用 where 子句返回所有记录
- android - Android Studio中相互依赖的回调函数——更优雅的解决方案
- arrays - Swift 5:将数组/字典转换为 JSON 格式
- python - Python ValueError 如果在不同的笔记本电脑上运行
- python - 列表推导中的“作为”关键字
- pyodbc - Pyodbc 只接受 windows 身份验证
- sas - 可以将带有 max 函数的子选择转换为 SAS 数据步吗?
- oracle - Crystal Report - 无法使用 Oracle 数据库打开报表
- c++11 - 使用 cppimport/pybind11 时的 Unicode 问题
- python - 网页抓取后附加 Excel 表格