【问题标题】:Need a workaround on firebase limit of range comparisons (<, <=, >, >=) on only 1 field仅在 1 个字段上需要对范围比较(<、<=、>、>=)的火力基础限制的解决方法
【发布时间】:2019-10-30 13:18:24
【问题描述】:

我需要创建一个在 firebase 中查找重叠日期的复合查询,所以我想出了以下内容:

    .where('startDate', '<=', endDate);
    .where('endDate', '>=', startDate);

这个查询会给我重叠的日期范围。问题是firebase 只允许单个字段上的不等式。所以它不会让我使用那个查询。有解决办法吗?

因此,如果您的会议安排在 06/15/19 - 06/18/19,您应该能够看到其他人在 06/17/19 - 07/01/19 之间召开会议。如果我只能在一个日期使用不等式过滤器,我不知道该怎么做。

感谢您的帮助。

【问题讨论】:

    标签: angular firebase google-cloud-firestore ionic4


    【解决方案1】:

    如果您只存储日期(而不是时间),那么您还可以将会议的每个单独日期存储在数组类型的字段中。因此,您在 6 月 15 日至 6 月 18 日的会议文档将包含四个单独日期的数组,可能表示为格式为 YYYYMMDD 的整数。

    现在,如果您想查找重叠,您可以使用array-contains 对该范围内的每个日期执行一次查询。合并客户端上的查询结果,结果将是与原始会议的每个给定日期至少共享一天的所有会议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      相关资源
      最近更新 更多