我已经创建了react应用程序,我正在使用firebase firestore。所以在使用之初,我没有遇到任何问题,直到我发现我需要创建一个这样的查询:
db.collection('schedule')
.where('working_day', '>=', new Date())
.where('master', '==', masterId)
.orderBy('working_day', 'desc')
.get();
我有一个名为schedule的集合,这个schedule集合有文档列表。每个文档都具有以下结构:
working_day: timestamp;
start_hour: number;
end_hour: number;
master: string;
当我调用这个查询时,我没有看到任何结果(请求已经消失,但根本没有结果(。有人建议我添加复合索引,它必须解决这个问题我使用firestore索引标签完成了这项工作,现在我有了这个索引:
Collection ID Fields indexed Query scope Status
schedule working_day Descending master Descending Collection Enabled
它已经成功应用了,但我的请求仍然没有任何结果。我也知道firestore可能会注意到我需要应用这个索引并为我提供链接,但我没有看到这个链接。我应该在哪里找到这个?或者我做错了什么?
打破我的头2天,没有发现为什么我有这个问题
看起来working.day
作为时间戳存储在您的firestore数据库中,但您的查询条件正在与可能导致问题的javascript日期对象进行比较。尝试用firebase时间戳替换日期对象,如下代码所示。
db.collection('schedule')
.where('working_day', '>=', new firebase.firestore.Timestamp.now())
.where('master', '==', masterId)
.orderBy('working_day', 'desc')
.get();