【问题标题】:Fetch field with dynamic key where date greater than使用日期大于的动态键获取字段
【发布时间】:2023-01-12 18:46:36
【问题描述】:

在阅读了一堆关于尝试对文档中具有动态键的字段执行查询的线程后,我有两个问题。

  1. 是否可以对我的数据模型执行以下“查询”:“获取创建日期等于或大于今天日期的字段”?
  2. 我应该更改数据模型吗?

    我有文档(下图中的 test.com),其中包含键是动态的字段(0、1、2、3 等等)。每个字段都是一个“地图”,其中(如果我错了请纠正我)包含一个对象。每个对象都有一个“createdAt”。我想查询“createdAt”上的所有字段并返回“createdAt”等于或大于今天日期的所有字段。所以在我的印象中,截至今天是 1 月 12 日,应该返回键为“1”的字段。

    我下面的查询不起作用,因为我没有“深入到每个字段”,如果每个文档只有颜色、createdAt 和 domainName 扁平化它会起作用。

      const domainsQuery = query(
        collectionGroup(db, "domains"),
        where("releaseAt", ">=", new Date())
      );
    

【问题讨论】:

    标签: javascript firebase google-cloud-firestore


    【解决方案1】:

    在 firebase 中不可能只获取文档的某些字段。您总是获取文档的所有字段。您可以过滤返回的文档,但不能过滤文档的字段。您可能应该调整模型。

    我建议只创建一个额外的子集合(名称可以是任意的)并将这些动态键改为子文档的 ID。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 2015-01-17
      • 1970-01-01
      • 2016-04-16
      • 1970-01-01
      • 2023-01-09
      相关资源
      最近更新 更多