仅在 1 个字段上需要针对范围比较(<、<=、>、>=)的 firebase 限制的解决方法

Need a workaround on firebase limit of range comparisons (<, <=, >, >=) on only 1 field

我需要创建一个复合查询来查找 firebase 中的重叠日期,因此我想到了以下内容:

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

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

因此,如果您在 2019 年 6 月 15 日 - 19 年 6 月 18 日安排了会议,你应该能够看到其他人在 2019 年 6 月 17 日 - 19 年 1 月 7 日举行的会议。如果我只能在一个日期使用不平等过滤器,我不知道该怎么做。

感谢您的帮助。

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

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