我正在尝试进行Firestore查询,以获取所有传入的会议。有些会议有date
,有些则没有(稍后再安排)。以下是我当前的查询:
query(
collection,
orderBy('date'),
or(where('date', '==', null), where('date', '>=', new Date()))
);
但是,当我运行这个查询时,我得到了一个错误:
ORDERBY子句不能包含具有相等筛选日期的字段
在某些情况下我理解这个错误,但是我有一个OR
条件,它应该处理这两种情况。
为了提供一些额外的上下文,我使用Cloud Firestore和前端客户端来查询数据库。我试过使用不同的方法和查询,但我还没有能够找到一个解决方案。
我还查看了Firestore文档和其他资源以寻求帮助,但我怀疑这可能是一个bug。
如果任何人有任何关于如何按日期排序结果的想法,同时仍然包括没有日期的会议,我将不胜感激。谢谢大家。
2条答案
按热度按时间nwo49xxi1#
你为什么不把这两个分开
注意语法是不正确的,我只是想得到的点,然后在本地排序
nuypyhwy2#
从Firestore文档中的查询限制列表中:
不能按包含在equality(
==
)或in
子句中的字段对查询进行排序。实际上,我不确定为什么会有这个限制,所以我会四处打听--但它似乎并不像你期望的那样是一个bug。
是否有可能重写查询以使用
!=
而不是==
?事实上,它可能已经适用于最后一个条件,因为
null
不是一个实际的日期值: