我可以使用Firestore查询文档并从querySnapshot响应中过滤掉某些文档字段吗?

时间:2019-05-31 15:25:07

标签: firebase google-cloud-firestore

想象一下我有一系列文件:

收藏集: 'products'

在该集合中,我有文档,每个文档都有一个非常重的字段,在将其发送给客户之前,我希望对其进行过滤。

文档 product1

{
  id: 'someUniqueKey',
  title: 'This is the title',
  price: 35.00,
  heavyField: [
    'longStringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    'longStringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    'longStringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    'longStringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    'longStringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    'longStringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
}

我可以在products集合中查询那些文档,而将这个特定的heavyField放在我的答复之外吗?

我希望能够过滤掉其中1个字段的文档。也许选择我想在我的客户上收到的字段。

这可能吗?还是在这种情况下,最好将数据的结构设置为不同,并将heavyField保留在其他集合中?

1 个答案:

答案 0 :(得分:1)

在SQL中,在查询中将其称为“ projection”。 Cloud Firestore不支持Web和移动客户端SDK的预测。相反,您应该将“大量”字段放入另一个集合中的文档中,并仅在需要时进行查询。

如果您想知道为什么,则部分与客户端本地持久层的工作方式有关。如果给定文档只在本地存在某些字段,则缓存将变得更加复杂。简单地获取和存储整个文档要简单得多,因此毫无疑问该文档是否在本地可用。

出于数据建模的目的,最好将文档视为无法分解的“原子单位”,全部或全部。